Exemplo n.º 1
0
    // 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");
        }
    }
Exemplo n.º 2
0
    // 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;
    }