Ejemplo n.º 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();
    }
 void GenerateTiles()
 {
     for (int z = 0, i = 0; z < ChunkZSize; z++)
     {
         for (int x = 0; x < ChunkXSize; x++, i++)
         {
             GridTile t = tiles[i] = Instantiate(tilePrefab);
             float    o = GridMetrics.gridTileOffset;
             t.transform.position = new Vector3(x * o + o / 2f, 0, z * o + o / 2f);
             t.transform.parent   = transform;
             t.InitializeTile(x, z, i);
         }
     }
 }
    public void InstantiateGridTiles()
    {
        tiles = new GridTile[tG.ChunkXSize * tG.ChunkZSize];

        float chunkXOffset = tG.ChunkXSize * CoordX * GridMetrics.gridTileOffset;
        float chunkZOffset = tG.ChunkZSize * CoordZ * GridMetrics.gridTileOffset;

        int tilesPerChunk    = tG.ChunkXSize * tG.ChunkZSize;
        int tilesBeforeChunk = tilesPerChunk * id;

        for (int z = 0, i = 0; z < tG.ChunkZSize; z++)
        {
            for (int x = 0; x < tG.ChunkXSize; x++, i++)
            {
                GridTile t = tiles[i] = Instantiate(tG.tilePrefab);
                t.transform.position = new Vector3(
                    x * GridMetrics.gridTileOffset + GridMetrics.gridTileOffset / 2f + chunkXOffset,
                    0,
                    z * GridMetrics.gridTileOffset + GridMetrics.gridTileOffset / 2f + chunkZOffset);
                t.transform.parent = transform;
                t.InitializeTile(x + tG.ChunkXSize * CoordX, z + tG.ChunkZSize * CoordZ, tilesBeforeChunk + i);
            }
        }
    }