Example #1
0
    // Fonction qui remplace une tuile existante par un nouveau type de tuile
    public void ReplaceTile(TileCoordinates deadTileCoords, int newTileType, out GridTile newTile)
    {
        GridTile deadTile  = _gameGridTiles[deadTileCoords.tileX, deadTileCoords.tileY];
        float    tileWidth = deadTile.tileDimensions.x;

        // Assignation du bon prefab et spawnPos
        GameObject tilePrefab = GetTileFromID(newTileType);
        Vector3    spawnPos   = deadTile.transform.position;

        // Instantiation
        GameObject go = Instantiate(tilePrefab, spawnPos, Quaternion.identity);

        // TEMP Instantiation sous le DebugManager
        if (DebugManager.instance != null)
        {
            go.transform.SetParent(DebugManager.instance.gridDebug.transform);
        }

        // Assignation des paramètres sur les OBJETS de tuile
        newTile            = go.GetComponent <GridTile>();
        newTile.tileX      = deadTile.tileX;
        newTile.tileY      = deadTile.tileY;
        newTile.tileName   = deadTile.tileName;
        newTile.tileType   = newTileType;
        newTile.PlanetHeat = deadTile.PlanetHeat;
        newTile.InitializeTile(deadTile.tileDimensions, _currentGridMode, _currentGridInfo);

        newTile.TransferObjectList(deadTile.CurrentObjectsInTile);

        // Remplacement de la tuile dans les arrays2D
        _gameGrid[deadTile.tileX, deadTile.tileY]      = newTileType;
        _gameGridTiles[deadTile.tileX, deadTile.tileY] = newTile;
        deadTile.TriggerNeighbourTilesUpdates();
        deadTile.DisableTile();
    }