Beispiel #1
0
        public void Open(Tile tile)
        {
            if (tile.TileAsset is SpriteTileAsset == false)
            {
                Hide();
                return;
            }

            Clear();

            selectedTile = tile;

            SpriteTileAsset tileAsset = (SpriteTileAsset)tile.TileAsset;

            SetWindowPosition(new Vector2(tile.X, tile.Y));
            window.gameObject.SetActive(true);

            foreach (Sprite s in tileAsset.RuleSprites)
            {
                TileChangeOption go = Instantiate(tileOptionPrefab, tileOptionParent);
                go.Initialize(this, s);
                options.Add(go);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Refreshes the graphic. Only gets called if the TileAsset is a SpriteTileAsset.
        /// </summary>
        public void RefreshGraphic()
        {
            if (TileAsset == null)
            {
                return;
            }
            if (TileAsset is SpriteTileAsset == false)
            {
                return;
            }

            SpriteTileAsset tileAsset = (SpriteTileAsset)TileAsset;

            if (UseManualSprite)
            {
                SpriteRenderer.sprite = tileAsset.RuleSprites.First(s => s.name == ManualSpriteName);
                return;
            }

            string spriteName = $"{TileAsset.name}_";

            Tile t = Layer.GetTile(X, Y + 1);

            if (t != null && t.TileAsset != null && t.TileAsset.name == TileAsset.name && tileAsset.IgnoreVerticalTiles == false)
            {
                spriteName += "U";
            }

            t = Layer.GetTile(X + 1, Y);
            if (t != null && t.TileAsset != null && t.TileAsset.name == TileAsset.name && tileAsset.IgnoreHorizontalTiles == false)
            {
                spriteName += "R";
            }

            t = Layer.GetTile(X, Y - 1);
            if (t != null && t.TileAsset != null && t.TileAsset.name == TileAsset.name && tileAsset.IgnoreVerticalTiles == false)
            {
                spriteName += "D";
            }

            t = Layer.GetTile(X - 1, Y);
            if (t != null && t.TileAsset != null && t.TileAsset.name == TileAsset.name && tileAsset.IgnoreHorizontalTiles == false)
            {
                spriteName += "L";
            }

            if (Flipped)
            {
                spriteName += "F";
            }

            Sprite sprite = tileAsset.RuleSprites.FirstOrDefault(s => s.name == spriteName);

            if (sprite == null)
            {
                sprite = tileAsset.DefaultSprite;
            }

            SpriteRenderer.sprite = sprite;

            TileAsset.Initialize(this);
        }