public override Map Generate(int width, int height) { var map = new Map(width, height); rooms = new List <Rectangle>(); var entireMap = new Rectangle(0, 0, map.Width, map.Height); var root = new BspNode(null, entireMap); root.Split(MinimumRoomSize); CreateRooms(root, map); var spawnRoom = root.GetRoom(); Program.Game.Player.X = spawnRoom.Center.X; Program.Game.Player.Y = spawnRoom.Center.Y; var stairsRoom = rooms.Last(); var stairs = ItemFactory.CreateStairs(stairsRoom.Center.X, stairsRoom.Center.Y, Program.Game.DungeonLevel); Program.Game.Entities.Add(stairs); foreach (var room in rooms) { // Don't spawn monsters in the player's room. if (room != spawnRoom) { SpawnMonsters(room); } SpawnItems(map, room); } return(map); }