public void GenerateNew(List <TileData> tileDatas) { HexData hexData = new HexData(Game.instance.gameConfig.hexSize); tiles = new Dictionary <Vector3, Tile>(); for (int r = -Game.instance.gameConfig.chunkSize / 2; r <= Game.instance.gameConfig.chunkSize / 2; r++) { for (int q = -Game.instance.gameConfig.chunkSize / 2; q <= Game.instance.gameConfig.chunkSize / 2; q++) { Vector3 pos = new Vector3( r * hexData.Width() + q * (.5f * hexData.Width()), 0, q * (hexData.Height() * .75f) ); GameObject tileGO = Instantiate(tilePrefab, transform); tileGO.transform.localPosition = pos; tileGO.transform.localScale = tileGO.transform.localScale * hexData.Size(); tileGO.name = "Tile (" + q + ", " + r + ")"; Tile tile = tileGO.GetComponent <Tile>(); tile.coords = new Vector3(r, q, -r - q) + this.coords; tile.chunk = this; tile.biome = tileDatas[0].biome; tile.tileType = tileDatas[0].tileType; tileDatas.RemoveAt(0); tile.SetColor(new Color(0, .5f, 0, .5f)); tiles.Add(new Vector3(r, q, -r - q), tile); } } hasGenerated = true; }
public Chunk AddChunk(ChunkData chunkData) { Vector3 coords = new Vector3(chunkData.coords[0], chunkData.coords[1], chunkData.coords[2]); Vector3 pos = new Vector3(coords.x * Game.instance.gameConfig.chunkSize * hexData.Width() + coords.y * (Game.instance.gameConfig.chunkSize / 2f * hexData.Width()), 0, coords.y * Game.instance.gameConfig.chunkSize * (.75f * hexData.Height())); GameObject chunkGO = ObjectPooler.instance.GetPooledObject("Chunk"); chunkGO.transform.parent = transform; chunkGO.transform.localPosition = pos; chunkGO.name = "Chunk (" + coords.x + ", " + coords.y + ")"; chunkGO.SetActive(true); Chunk chunk = chunkGO.GetComponent <Chunk>(); chunk.coords = coords; if (chunkData.tiles == null) { chunk.Generate(); } else { chunk.Generate(chunkData.tiles); } chunks.Add(coords, chunk); SaveManager.instance.SaveChunk(chunk); return(chunk); }