コード例 #1
0
        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);
        }