public void UpdateSprite()
        {
            Vector2 pos = tile.gameObject.transform.position;

            Tile[,] grid = WorldManager.GetTerrainGrid(new Vector2(pos.x - 1, pos.y - 1), new Vector2Int(3, 3));
            int[,] ids   = new int[3, 3];
            for (int x = 0; x < 3; ++x)
            {
                for (int y = 0; y < 3; ++y)
                {
                    ids[x, y] = grid[x, y].tileData.Id;
                    // if(x != 1 || y != 1){
                    //     grid[x, y].AddDataChangeListener(UpdateSprite);
                    // }
                }
            }
            TerrainBrush.TileType tileType = TerrainBrush.GetTileType(ids, 1, 1);
            //TerrainBrush.TileType tileType = TerrainBrush.TileType.Center;
            int other = TerrainBrush.GetOtherType(ids, 1, 1, tileType);

            if (tileType == TerrainBrush.TileType.Error)
            {
                tile.SetTileData(TileData.idToData[other]);
                return;
            }
            if (other != -1)
            {
                name = tile.tileData.Name + TileData.idToData[other].Name + (int)tileType;
            }
            else
            {
                name = tile.tileData.Name + "0";
            }
            Sprite sprite = SpriteManager.GetTileSprite(name + "_" + currFrame.ToString());

            if (sprite == null)
            {
                name   = tile.tileData.Name + "0";
                sprite = SpriteManager.GetTileSprite(name + "_" + currFrame.ToString());
            }
            tile.spriteRenderer.sprite = sprite;
            if (!tile.tileData.IsWalkable)
            {
                tile.gameObject.AddComponent <PolygonCollider2D>();
            }
            tile.tileScript.StartCoroutine(Animator());
        }
Example #2
0
        public void UpdateSprite()
        {
            Vector2 pos = tile.gameObject.transform.position;

            Tile[,] grid = WorldManager.GetTerrainGrid(new Vector2(pos.x - 1, pos.y - 1), new Vector2Int(3, 3));
            int[,] ids   = new int[3, 3];
            for (int x = 0; x < 3; ++x)
            {
                for (int y = 0; y < 3; ++y)
                {
                    ids[x, y] = grid[x, y].tileData.Id;
                    if (x != 1 || y != 1)
                    {
                        grid[x, y].AddDataChangeListener(UpdateSprite);
                    }
                }
            }

            TerrainBrush.TileType tileType = TerrainBrush.GetTileType(ids, 1, 1);
            if (type == tileType && tileType != TerrainBrush.TileType.Error)
            {
                tile.spriteRenderer.sprite = sprite;
                if (!tile.tileData.IsWalkable)
                {
                    tile.gameObject.AddComponent <PolygonCollider2D>();
                }
                return;
            }
            type = tileType;

            int other = TerrainBrush.GetOtherType(ids, 1, 1, tileType);

            if (tileType == TerrainBrush.TileType.Error)
            {
                tile.SetTileData(TileData.idToData[other]);
                return;
                //SetTileAsCenter();
            }
            else
            {
                string name = "";
                if (other != -1)
                {
                    name = tile.tileData.Name + TileData.idToData[other].Name + (int)tileType;
                    tile.spriteRenderer.sortingLayerName = "Terrain";
                    sprite = SpriteManager.GetTileSprite(name);
                    if (sprite == null)
                    {
                        SetTileAsCenter();
                    }
                }
                else
                {
                    SetTileAsCenter();
                }
            }
            tile.spriteRenderer.sprite = sprite;
            if (!tile.tileData.IsWalkable)
            {
                tile.gameObject.AddComponent <PolygonCollider2D>();
            }
            if (!sprite)
            {
                int rand = Random.Range(0, tileAmounts);
                sprite = SpriteManager.GetTileSprite(tile.tileData.Name + rand.ToString());
            }
            tile.spriteRenderer.sprite = sprite;
            if (!tile.tileData.IsWalkable)
            {
                tile.gameObject.AddComponent <PolygonCollider2D>();
            }
        }
Example #3
0
 public AutoTile(int tileAmounts)
 {
     this.tileAmounts = tileAmounts;
     type             = TerrainBrush.TileType.Error;
 }