Implemented room generation around boss room.
This commit is contained in:
parent
fe1c11aeef
commit
2baa78bd90
1 changed files with 75 additions and 64 deletions
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue