Implemented room generation around boss room.

This commit is contained in:
Max 2025-02-07 09:15:40 +01:00
parent fe1c11aeef
commit 2baa78bd90

View file

@ -42,17 +42,29 @@ namespace DungeonGenerator
} }
AddNormalRoomsAroundMonsterRooms(dungeonMap); AddNormalRoomsAroundMonsterRooms(dungeonMap);
AddNormalRoomsAroundBossRoom(dungeonMap);
return dungeonMap; return dungeonMap;
} }
private void AddNormalRoomsAroundBossRoom(DungeonMap dungeon)
{
AddNormalRoomsAroundRoom(dungeon.GetBossRoom(), dungeon);
}
private void AddNormalRoomsAroundMonsterRooms(DungeonMap dungeon) private void AddNormalRoomsAroundMonsterRooms(DungeonMap dungeon)
{ {
HashSet<Point> unoccupiedPoints = dungeon.GetUnoccupiedPoints();
Random random = new Random();
foreach (Room monsterRoom in dungeon.GetMonsterRooms()) foreach (Room monsterRoom in dungeon.GetMonsterRooms())
{ {
var roomPoints = monsterRoom.GetPointsInRoom(); AddNormalRoomsAroundRoom(monsterRoom, dungeon);
}
}
private void AddNormalRoomsAroundRoom(Room room, DungeonMap dungeon)
{
Random random = new Random();
var roomPoints = room.GetPointsInRoom();
int minX = roomPoints.Min(p => p.X); int minX = roomPoints.Min(p => p.X);
int maxX = roomPoints.Max(p => p.X); int maxX = roomPoints.Max(p => p.X);
int minY = roomPoints.Min(p => p.Y); int minY = roomPoints.Min(p => p.Y);
@ -121,12 +133,11 @@ namespace DungeonGenerator
Room newRoom = CreateAdjacentRoom(RoomType.Normal, unoccupiedPointsOnSide, side, dungeon.GetOccupiedPoints()); Room newRoom = CreateAdjacentRoom(RoomType.Normal, unoccupiedPointsOnSide, side, dungeon.GetOccupiedPoints());
if (newRoom != null) if (newRoom != null)
{ {
monsterRoom.AddAdjacentRoom(newRoom, side); room.AddAdjacentRoom(newRoom, side);
dungeon.AddRoom(newRoom); dungeon.AddRoom(newRoom);
} }
} }
} }
}
private Room CreateAdjacentRoom(RoomType type, List<Point> unoccupiedPointsOnSide, RoomSide side, HashSet<Point> occupiedPoints) private Room CreateAdjacentRoom(RoomType type, List<Point> unoccupiedPointsOnSide, RoomSide side, HashSet<Point> occupiedPoints)
{ {