예제 #1
0
    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;
    }
예제 #2
0
    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);
    }