public void ReplaceTile <T> (int p_x, int p_z) where T : Script_ITile { if (typeof(T) == typeof(Script_TileGrass)) { Script_ITile tile = AccessGridTile(p_x, p_z); tile.DestroyGameObject(); Vector3Int newPos = new Vector3Int(p_x, 0, p_z); Script_TileGrass newTile = new Script_TileGrass(_gameManager, this, newPos); SetGridTile(p_x, p_z, newTile); } if (typeof(T) == typeof(Script_TileDirt)) { Script_ITile tile = AccessGridTile(p_x, p_z); tile.DestroyGameObject(); Vector3Int newPos = new Vector3Int(p_x, 0, p_z); Script_TileDirt newTile = new Script_TileDirt(_gameManager, this, newPos); SetGridTile(p_x, p_z, newTile); } if (typeof(T) == typeof(Script_TileCrater)) { Script_ITile tile = AccessGridTile(p_x, p_z); tile.DestroyGameObject(); Vector3Int newPos = new Vector3Int(p_x, 0, p_z); Script_TileCrater newTile = new Script_TileCrater(_gameManager, this, newPos); SetGridTile(p_x, p_z, newTile); } }
private void SetGridTile(int p_x, int p_z, Script_ITile p_tile) { _grid [p_z * _width + p_x] = p_tile; }