// Vytvoří instanci části místnosti na mapě podle poču otevřených zdí private void SpawnTilePrefab(Subcell subcell) { int firstDoor = subcell.GetFirstDoor(); switch (subcell.GetDoorCount()) { case 1: Instantiate(_tileSets[subcell.TileType].tiles[0], subcell.Position, Quaternion.Euler(new Vector3(0, firstDoor * 90, 0)), transform); break; case 2: if (subcell.Neighbours[((firstDoor + 2) * 2) % 8] == null) { Instantiate(_tileSets[subcell.TileType].tiles[1], subcell.Position, Quaternion.Euler(new Vector3(0, firstDoor * 90, 0)), transform); } else { Instantiate(_tileSets[subcell.TileType].tiles[2], subcell.Position, Quaternion.Euler(new Vector3(0, firstDoor * 90, 0)), transform); } break; case 3: Instantiate(_tileSets[subcell.TileType].tiles[3], subcell.Position, Quaternion.Euler(new Vector3(0, (firstDoor - 1) * 90, 0)), transform); break; case 4: Instantiate(_tileSets[subcell.TileType].tiles[4], subcell.Position, Quaternion.identity, transform); break; default: throw new System.Exception("Cell can't have more than four doors"); } }
// Vytvoří místnost na kraji mapy a prpojí ji ke zbytku private void CreateOuterRoom() { int side = Random.Range(0, 4); Vector2Int cellPosition = GetOuterCell(side); Vector2Int dimensions = _cellData.GetDimensions(cellPosition); Vector2Int path = _cellData.GetPath(cellPosition, dimensions); int currenSubcellIndex = _cellData.Cells[cellPosition.x, cellPosition.y].lowestSubcellIndex + (dimensions.y * path.x) + path.y; Subcell outerRoomSubcell = CreateOuterRoomSubcell(currenSubcellIndex, side); GetComponent <TileGenerator>().SpawnSingleTile(outerRoomSubcell.Position, outerRoomSubcell.GetFirstDoor() * 90, 2, outerRoomSubcell.TileType); GameObject boss = GetComponent <Spawner>().SpawnBossRoom(outerRoomSubcell.Position, side, _mazeSettings.distanceBetweenCells); boss.GetComponent <Boss>().OnBossDeath = _winCondition.OnCompleted; }