Exemplo n.º 1
0
        public T CreateMap()
        {
            var cave      = CellularAutomata.GenerateCaves(_width, _height, _density);
            var regionMap = MapFeatureDetector.GetRegions(cave);

            // Pick a random room to start and dig a tunnel to a random other room.
            // Go from there to another random room until all are connected.
            var roomCenters = GetRoomCenters(regionMap).ToList();
            var startPoint  = roomCenters[random.Next(roomCenters.Count)];

            roomCenters.Remove(startPoint);

            while (roomCenters.Count > 0)
            {
                var nextPoint = roomCenters[random.Next(roomCenters.Count)];
                roomCenters.Remove(nextPoint);
                cave       = CreatePath(cave, startPoint.X, startPoint.Y, nextPoint.X, nextPoint.Y);
                startPoint = nextPoint;
            }
            var map = new RogueSharp.Map(_width, _height);

            foreach (var cell in map.GetAllCells())
            {
                var open = cave[cell.X, cell.Y] == 0;
                map.SetCellProperties(cell.X, cell.Y, isTransparent: open, isWalkable: open, false);
            }

            return((T)(object)map);
        }