Пример #1
0
    public static void PackRoom(Room room, int floor, Dungeon building)
    {
        room.xSize = (int)Mathf.Sqrt(room.size);
        room.ySize = (int)(room.size / (float)room.xSize);
        int swapRoll = Random.Range(0, 2);

        if (swapRoll == 0)
        {
            var temp = room.xSize;
            room.xSize = room.ySize;
            room.ySize = temp;
        }
        for (int x = 0; x < building.maxDimensions - room.xSize; x++)
        {
            for (int y = 0; y < building.maxDimensions - room.ySize; y++)
            {
                if (LevelGenValidationUtils.RoomFits(room, floor, x, y, building.grid))
                {
                    room.x     = x;
                    room.y     = y;
                    room.floor = floor;
                    LevelGenGridUtils.FillRoom(room, floor, x, y, building.grid);
                    return;
                }
            }
        }
        building.maxDimensions = (int)(building.maxDimensions * 1.2);
        PackRoom(room, floor, building);
    }
Пример #2
0
 private static bool PlaceStartingRoom(Dungeon building, Room room)
 {
     room.size  = 25;
     room.xSize = 5;
     room.ySize = 5;
     room.x     = (building.maxDimensions / 2) - 2;                                           // 58;
     room.y     = (building.maxDimensions / 2) - 2;                                           // 58;
     room.SetEntrance((building.maxDimensions / 2) - 2, (building.maxDimensions / 2) - 2, 3); //room.SetEntrance(58, 58, 3);
     LevelGenGridUtils.FillRoom(room, 0, room.x, room.y, building.grid);
     building.grid[0, (building.maxDimensions / 2) - 3, (building.maxDimensions / 2) - 2] = "x";
     building.grid[0, (building.maxDimensions / 2) - 4, (building.maxDimensions / 2) - 2] = "E";
     return(true);
 }