コード例 #1
0
    // Start is called before the first frame update
    void Start()
    {
        EntityManager   entityManager        = World.Active.EntityManager;
        EntityArchetype harvestableComponent = entityManager.CreateArchetype(
            typeof(HarvestableComponent),
            typeof(Translation),
            typeof(RenderMesh),
            typeof(LocalToWorld)
            );

        Tilemap tilemap = GetComponent <Tilemap>();

        foreach (var pos in tilemap.cellBounds.allPositionsWithin)
        {
            Vector3Int localPlace = new Vector3Int(pos.x, pos.y, pos.z);
            Vector3    place      = tilemap.CellToWorld(localPlace);
            if (tilemap.HasTile(localPlace))
            {
                TileBase tile = tilemap.GetTile(localPlace);

                Material tileMat    = new Material(Shader.Find("Unlit/Transparent"));
                Sprite   tileSprite = Resources.Load <Sprite>("Sprites/TileSprites/" + tile.name);
                tileMat.mainTexture = tileSprite.texture;

                int  width    = 1;
                int  height   = 1;
                Mesh tileMesh = new Mesh();
                // Setup vertices
                Vector3[] newVertices = new Vector3[4];
                float     halfHeight  = height * 0.5f;
                float     halfWidth   = width * 0.5f;
                newVertices [0] = new Vector3(-halfWidth, -halfHeight, 0);
                newVertices [1] = new Vector3(-halfWidth, halfHeight, 0);
                newVertices [2] = new Vector3(halfWidth, -halfHeight, 0);
                newVertices [3] = new Vector3(halfWidth, halfHeight, 0);

                // Setup UVs
                Vector2[] newUVs = new Vector2[newVertices.Length];
                newUVs [0] = new Vector2(0, 0);
                newUVs [1] = new Vector2(0, 1);
                newUVs [2] = new Vector2(1, 0);
                newUVs [3] = new Vector2(1, 1);

                // Setup triangles
                int[] newTriangles = new int[] { 0, 1, 2, 3, 2, 1 };

                // Setup normals
                Vector3[] newNormals = new Vector3[newVertices.Length];
                for (int i = 0; i < newNormals.Length; i++)
                {
                    newNormals [i] = Vector3.forward;
                }

                // Create quad
                tileMesh.vertices  = newVertices;
                tileMesh.uv        = newUVs;
                tileMesh.triangles = newTriangles;
                tileMesh.normals   = newNormals;

                Entity entity = entityManager.CreateEntity(harvestableComponent);
                entityManager.SetSharedComponentData(entity, new RenderMesh {
                    material = tileMat,
                    mesh     = tileMesh
                });

                // pivot of the sprite is center so we have to add 0.5 to x and y
                entityManager.SetComponentData(entity, new Translation {
                    Value = new float3(place.x + 0.5f, place.y + 0.5f, -1)
                });

                int             tileNo = int.Parse(tile.name.Substring(tile.name.LastIndexOf('_') + 1));
                HarvestableType type   = HarvestableData.getHarvestableType(tileNo);
                entityManager.SetComponentData(entity, new HarvestableComponent {
                    type            = type,
                    ressourceAmount = type.Equals(HarvestableType.WOOD) ? 50 : 20000
                });
            }
        }
        // delete all tiles because we replaced them with entities
        tilemap.ClearAllTiles();
    }
コード例 #2
0
ファイル: Settings.cs プロジェクト: xaoc-krsk/AO-Radar
 public static bool IsInHarvestable(HarvestableType ht)
 {
     return(harvestable.Contains(ht));
 }
コード例 #3
0
        public static string getMapStringInfo(HarvestableType type)
        {
            switch (type)
            {
            case HarvestableType.WOOD:
            case HarvestableType.WOOD_GIANTTREE:
            case HarvestableType.WOOD_CRITTER_GREEN:
            case HarvestableType.WOOD_CRITTER_RED:
            case HarvestableType.WOOD_CRITTER_DEAD:
            case HarvestableType.WOOD_GUARDIAN_RED:
                return("W");

            case HarvestableType.ROCK:
            case HarvestableType.ROCK_CRITTER_GREEN:
            case HarvestableType.ROCK_CRITTER_RED:
            case HarvestableType.ROCK_CRITTER_DEAD:
            case HarvestableType.ROCK_GUARDIAN_RED:
                return("R");

            case HarvestableType.FIBER:
            case HarvestableType.FIBER_CRITTER:
            case HarvestableType.FIBER_GUARDIAN_RED:
            case HarvestableType.FIBER_GUARDIAN_DEAD:
                return("F");

            case HarvestableType.HIDE:
            case HarvestableType.HIDE_FOREST:
            case HarvestableType.HIDE_STEPPE:
            case HarvestableType.HIDE_SWAMP:
            case HarvestableType.HIDE_MOUNTAIN:
            case HarvestableType.HIDE_HIGHLAND:
            case HarvestableType.HIDE_CRITTER:
            case HarvestableType.HIDE_GUARDIAN:
                return("H");

            case HarvestableType.ORE:
            case HarvestableType.ORE_CRITTER_GREEN:
            case HarvestableType.ORE_CRITTER_RED:
            case HarvestableType.ORE_CRITTER_DEAD:
            case HarvestableType.ORE_GUARDIAN_RED:
                return("O");

            case HarvestableType.DEADRAT:
                return("DEAD_RAT");

            case HarvestableType.SILVERCOINS_NODE:
            case HarvestableType.SILVERCOINS_LOOT_STANDARD_TRASH:
            case HarvestableType.SILVERCOINS_LOOT_VETERAN_TRASH:
            case HarvestableType.SILVERCOINS_LOOT_ELITE_TRASH:
            case HarvestableType.SILVERCOINS_LOOT_ROAMING:
            case HarvestableType.SILVERCOINS_LOOT_ROAMING_MINIBOSS:
            case HarvestableType.SILVERCOINS_LOOT_ROAMING_BOSS:
            case HarvestableType.SILVERCOINS_LOOT_STANDARD:
            case HarvestableType.SILVERCOINS_LOOT_VETERAN:
            case HarvestableType.SILVERCOINS_LOOT_ELITE:
            case HarvestableType.SILVERCOINS_LOOT_STANDARD_MINIBOSS:
            case HarvestableType.SILVERCOINS_LOOT_VETERAN_MINIBOSS:
            case HarvestableType.SILVERCOINS_LOOT_ELITE_MINIBOSS:
            case HarvestableType.SILVERCOINS_LOOT_STANDARD_BOSS:
            case HarvestableType.SILVERCOINS_LOOT_VETERAN_BOSS:
            case HarvestableType.SILVERCOINS_LOOT_ELITE_BOSS:
            case HarvestableType.SILVERCOINS_LOOT_CHEST_STANDARD:
            case HarvestableType.SILVERCOINS_LOOT_CHEST_STANDARD_TRASH:
            case HarvestableType.SILVERCOINS_LOOT_CHEST_VETERAN:
            case HarvestableType.SILVERCOINS_LOOT_CHEST_DEMON:
            case HarvestableType.SILVERCOINS_LOOT_SARCOPHAGUS_STANDARD_MINIBOSS:
                return("SILVER");

            case HarvestableType.CHEST_EXP_SILVERCOINS_LOOT_STANDARD:
            case HarvestableType.CHEST_EXP_SILVERCOINS_LOOT_VETERAN:
                return("CHEST");

            default:
                return("ERR" + type);
            }
        }