Beispiel #1
0
    private void BuildCorridors(SubRoom subRoom) //recursive function
    {
        if (subRoom == null)                     //check if subroom exists
        {
            return;
        }

        if (!subRoom.IsLeaf())
        {
            BuildCorridors(subRoom.Left);
            BuildCorridors(subRoom.Right);

            subRoom.CreateCorridors(subRoom.Left, subRoom.Right, corridorsHeight, corridorsWidth);
        }

        foreach (Rect corridor in subRoom.Corridors) //get corridor from the room from parameters
        {
            for (int i = Mathf.RoundToInt(corridor.x); i < corridor.xMax; i++)
            {
                for (int j = Mathf.RoundToInt(corridor.y); j < corridor.yMax; j++)
                {
                    if (boardFloorPositions[i, j] == null)
                    {
                        tilemap.SetTile(new Vector3Int(i, j, 0), c_Tile);
                    }
                }
            }
        }
    }
Beispiel #2
0
 private void CreateBSP(SubRoom subRoom)
 {
     if (subRoom.IsLeaf()) // if subroom too large
     {
         if (subRoom.Rectangle.width > sizeRoomMin && subRoom.Rectangle.height > sizeRoomMin)
         {
             subRoom.Split((int)sizeRoomMin, (int)sizeRoomMax);
             CreateBSP(subRoom.Left);
             CreateBSP(subRoom.Right);
         }
     }
 }
Beispiel #3
0
    private void Start()
    {
        root = new SubRoom(new Rect(0, 0, boardRows, boardColumns));
        CreateBSP(root);
        root.CreateRoom();

        boardFloorPositions = new GameObject[boardRows, boardColumns];
        DrawRooms(root);
        BuildCorridors(root);
        BuildWalls(root);

        TruckWays();
    }
Beispiel #4
0
 private void BuildWalls(SubRoom subRoom)
 {
     for (int i = -1; i < boardRows; i++)
     {
         for (int j = -1; j < boardColumns; j++)
         {
             if (!tilemap.HasTile(new Vector3Int(i, j, 0)))
             {
                 tilemapWall.SetTile(new Vector3Int(i, j, 0), w_Tile);
             }
         }
     }
 }
Beispiel #5
0
 private void DrawRooms(SubRoom subRoom)
 {
     if (subRoom == null)
     {
         return;
     }
     if (subRoom.IsLeaf())
     {
         for (int i = Mathf.RoundToInt(subRoom.Room.x); i < subRoom.Room.xMax; i++)
         {
             for (int j = Mathf.RoundToInt(subRoom.Room.y); j < subRoom.Room.yMax; j++)
             {
                 tilemap.SetTile(new Vector3Int(i, j, 0), g_Tile);
             }
         }
     }
     else
     {
         DrawRooms(subRoom.Left);
         DrawRooms(subRoom.Right);
     }
 }