コード例 #1
0
        private static void tryAddFeature(Level level, Location doorLoc, Feature feature)
        {
            Direction[] directions = { Direction.North, Direction.South, Direction.West, Direction.East };

            foreach (Direction direction in directions)
            {
                Rect rect = createRect(doorLoc, direction, feature);
                rect.expand();
                if (rectIsClear(level, rect))
                {
                    rect.compress();
                    if (feature == Feature.Room)
                    {
                        carveRoom(level, rect, false, TileType.Dungeon_Floor);
                    }
                    else if (feature == Feature.Corridor)
                    {
                        carveCorridor(level, rect, false, TileType.Dungeon_Floor);
                    }
                    level.addTile(new Tile(false, TileType.Dungeon_Floor), doorLoc);
                    level.addWalkable(new Door(), doorLoc);
                    break;
                }
            }
        }
コード例 #2
0
 private static void carveRoom(Level level, Rect rect, bool blocks, TileType tileType)
 {
     for (int x = rect.x1; x <= rect.x2; x++)
     {
         for (int y = rect.y1; y <= rect.y2; y++)
         {
             Tile tile = new Tile(blocks, tileType);
             level.addTile(tile, new Location(x, y));
         }
     }
 }