Exemplo n.º 1
0
 public GameObject getResource(TileTerrainIDs id)
 {
     return(resources [id]);
 }
Exemplo n.º 2
0
    private void initWorldData()
    {
        TextAsset file = Resources.Load("TiledMap/map.json", typeof(TextAsset)) as TextAsset;

        Debug.Assert(file != null);

        JSONNode node = JSON.Parse(file.text);

        numTilesX = (uint)node ["width"].AsInt;
        numTilesY = (uint)node ["height"].AsInt;
        Debug.Log("MapW: " + numTilesX);
        Debug.Log("MapH: " + numTilesY);


        Debug.Log("Map Sice: " + numTilesX + " W, " + numTilesY + " H");
        worldTerrainType           = new TileTerrainType[numTilesY, numTilesX];
        worldTerrainID             = new TileTerrainIDs[numTilesY, numTilesX];
        worldTerrainRepresentation = new GameObject[numTilesY, numTilesX];
        riceTerrains  = new RiceTerrainTile[numTilesY, numTilesX];
        chunkTilesPos = new Dictionary <int, List <Pair <uint, uint> > >();
        vegetation    = new Dictionary <uintPair, Vegetation> ();
        canalManager  = new CanalManager(numTilesX, numTilesY);
        _weedFactory  = new WeedFactory(this, RICE_CHUNK_W * RICE_CHUNK_H);

        chunkNextID = 0;

        // TERRAIN
        for (uint k = 0; k < numTilesX * numTilesY; ++k)
        {
            uint i = k / numTilesX;
            uint j = k % numTilesX;
            //Debug.Log("Data["+i+","+j+"]="+node ["layers"] [0] ["data"] [k]);
            TileTerrainIDs v = (TileTerrainIDs)node ["layers"] [0] ["data"] [(int)k].AsInt;
            worldTerrainID [i, j]   = v;
            worldTerrainType [i, j] = (v == TileTerrainIDs.HERBS) ? TileTerrainType.FREE : TileTerrainType.DECORATION;
        }


        // VEGETATION
        for (uint k = 0; k < numTilesX * numTilesY; ++k)
        {
            uint i = k / numTilesX;
            uint j = k % numTilesX;
            //Debug.Log("Data["+i+","+j+"]="+node ["layers"] [0] ["data"] [k]);
            int v = node ["layers"] [1] ["data"] [(int)k].AsInt;
            if (v != 0)
            {
                uintPair matrixPos = new uintPair(i, j);
                vegetation [matrixPos] = new Vegetation(i, j, (VegID)v);
            }
        }

        // CANALS
        for (uint k = 0; k < numTilesX * numTilesY; ++k)
        {
            uint i = k / numTilesX;
            uint j = k % numTilesX;
            //Debug.Log("Data["+i+","+j+"]="+node ["layers"] [0] ["data"] [k]);
            int v = node ["layers"] [2] ["data"] [(int)k].AsInt;
            if ((TileOthersIDs)v == TileOthersIDs.CANAL)
            {
                addCanal(i, j);
            }
            else if ((TileOthersIDs)v == TileOthersIDs.WATER_SOURCE)
            {
                addCanal(i, j);
                canalManager.addWaterSource(3, 6);
            }
        }
        canalManager.updateCanals();

        //RICE CHUNKS
        for (uint k = 0; k < numTilesX * numTilesY; ++k)
        {
            uint i = k / numTilesX;
            uint j = k % numTilesX;
            //Debug.Log("Data["+i+","+j+"]="+node ["layers"] [0] ["data"] [k]);
            int v = node ["layers"] [2] ["data"] [(int)k].AsInt;
            if ((TileOthersIDs)v == TileOthersIDs.RICE_CHUNK)
            {
                createRiceChunk(i, j, true);
            }
        }

        canalManager.updateCanals();
    }