private IEnumerator InitWorld_Prim() { WorldTile.SetTileColors( new Dictionary <WorldTileType, Color>() { { WorldTileType.Undefined, new Color(0f, 0f, 0f) }, { WorldTileType.Room, new Color(0.8f, 0.9f, 0.8f) }, { WorldTileType.Wall, new Color(0.2f, 0.2f, 0.2f) }, { WorldTileType.Pillar, new Color(0.1f, 0.1f, 0.1f) }, { WorldTileType.WallOpen, new Color(0.8f, 0.9f, 0.8f) }, { WorldTileType.WallA, new Color(0.2f, 0.1f, 0.1f) }, { WorldTileType.WallB, new Color(0.1f, 0.2f, 0.1f) }, } ); // initialize the board with tiles for (int row = 0; row < _numRows; row++) { for (int col = 0; col < _numCols; col++) { WorldTileConfig tileConfig = _tileSeed.GetTileConfig(col, row); WorldTileType tileType = tileConfig.TileType; if (_numCols > 5) { if (tileType == WorldTileType.WallA) { tileType = WorldTileType.Wall; } else if (tileType == WorldTileType.WallB) { tileType = WorldTileType.Wall; } } // world edges are always pillars if (_numCols > 10 && _numRows > 10) { if (col == 0 || col == _numCols - 1) { tileType = WorldTileType.Pillar; } else if (row == 0 || row == _numRows - 1) { tileType = WorldTileType.Pillar; } } WorldTile tile = CreateTile(col, row, tileType); _tiles[col, row] = tile; // remember where we put the rooms so we can easily choose a random room to start our generation if (tile.TileType == WorldTileType.Room) { _listRooms.Add(tile); } } // frame limiting if (row % _generationRate == 0) { yield return(new WaitForEndOfFrame()); } } //Debug.Log("connecting adjoined tiles..."); yield return(new WaitForEndOfFrame()); // connect adjoined tiles for (int row = 0; row < _numRows; row++) { for (int col = 0; col < _numCols; col++) { WorldTileConfig tileConfig = _tileSeed.GetTileConfig(col, row); if (tileConfig.ParentX != 0 || tileConfig.ParentY != 0) { // Debug.Log(" tile " + col + "x" + row + " is a child of offset (" + tileConfig.ParentX + "," + tileConfig.ParentY + ")"); WorldTile parentTile = GetTile(col + tileConfig.ParentX, row + tileConfig.ParentY); if (parentTile != null) { WorldTile childTile = GetTile(col, row); // Debug.Log(" >> setting tile " + childTile + " as child of " + parentTile + " ==> (" + tileConfig.ParentX + "," + tileConfig.ParentY + ")"); childTile.SetParentTile(parentTile); } } } // yield return new WaitForEndOfFrame(); } }