Esempio n. 1
0
        private static bool CanConvertToWall(this RoomTiles tiles, Coordinate coordinate)
        {
            if (!tiles.IsInside(coordinate))
            {
                return(false);
            }

            return(tiles[coordinate].IsNullOrEmpty());
        }
Esempio n. 2
0
        internal Room(RoomBlocks blocks, DispatchRegistry registry, IRandomNumberGenerator randomNumbers, int tilesPerBlock)
            : base(Coordinate.NotSet, registry)
        {
            blocks.ThrowIfNull(nameof(blocks));
            randomNumbers.ThrowIfNull(nameof(randomNumbers));

            _randomNumbers = randomNumbers;

            Tiles = new RoomTiles(blocks.RowUpperBound, blocks.ColumnUpperBound, tilesPerBlock, Registry, _randomNumbers);
        }
Esempio n. 3
0
        public static Compass8Points DiscoverSurroundingSpace(this RoomTiles tiles, Coordinate coordinate)
        {
            var surroundingSpace = Compass8Points.Undefined;

            var below = CanConvertToWall(tiles, coordinate.Down());

            if (below)
            {
                surroundingSpace |= Compass8Points.South;
            }

            var above = CanConvertToWall(tiles, coordinate.Up());

            if (above)
            {
                surroundingSpace |= Compass8Points.North;
            }

            var right = CanConvertToWall(tiles, coordinate.Right());

            if (right)
            {
                surroundingSpace |= Compass8Points.East;
            }

            var left = CanConvertToWall(tiles, coordinate.Left());

            if (left)
            {
                surroundingSpace |= Compass8Points.West;
            }

            var topLeft = CanConvertToWall(tiles, coordinate.Up().Left());

            if (topLeft)
            {
                surroundingSpace |= Compass8Points.NorthWest;
            }

            var topRight = CanConvertToWall(tiles, coordinate.Up().Right());

            if (topRight)
            {
                surroundingSpace |= Compass8Points.NorthEast;
            }

            var bottomLeft = CanConvertToWall(tiles, coordinate.Down().Left());

            if (bottomLeft)
            {
                surroundingSpace |= Compass8Points.SouthWest;
            }

            var bottomRight = CanConvertToWall(tiles, coordinate.Down().Right());

            if (bottomRight)
            {
                surroundingSpace |= Compass8Points.SouthEast;
            }

            return(surroundingSpace);
        }
Esempio n. 4
0
 private RoomTiles(RoomTiles tiles) : base(tiles)
 {
     TilesPerBlock = tiles.TilesPerBlock;
 }
Esempio n. 5
0
        private Room(Room room) : base(room.Coordinates, room.Registry)
        {
            _randomNumbers = room._randomNumbers;

            Tiles = (RoomTiles)room.Tiles.Clone();
        }