Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / mapEditorMapTile / MapEditorMapTilePanel.cs
using Godot;

namespace UI.MapEditorMapTile;

public partial class MapEditorMapTilePanel : MapEditorMapTile
{
    /// <summary>
    /// 使用的TileSet数据
    /// </summary>
    public TileSetSplit TileSetSplit { get; private set; }

    /// <summary>
    /// 选中的资源 Id
    /// </summary>
    public int SourceIndex { get; private set; } = -1;
    
    /// <summary>
    /// 选中的 Source
    /// </summary>
    public TileSetSourceInfo TileSetSourceInfo
    {
        get
        {
            if (SourceIndex < 0)
            {
                return null;
            }
            return TileSetSplit.TileSetInfo.Sources[SourceIndex];
        }
    }

    public override void OnCreateUi()
    {
        //切换资源
        S_SourceOption.Instance.ItemSelected += OnChangeSource;
        //切换笔刷类型
        S_HandleOption.Instance.ItemSelected += OnChangeBrush;
        OnChangeBrush(0);
    }

    public override void OnDestroyUi()
    {
        
    }

    /// <summary>
    /// 初始化TileSet数据
    /// </summary>
    public void InitData(TileSetSplit tileSetSplit)
    {
        TileSetSplit = tileSetSplit;
        //初始化Source下拉框
        var optionButton = S_SourceOption.Instance;
        foreach (var sourceInfo in tileSetSplit.TileSetInfo.Sources)
        {
            optionButton.AddItem(sourceInfo.Name);
        }

        optionButton.Selected = 0;
        OnChangeSource(0);
    }
    
    // 切换选中的资源
    private void OnChangeSource(long index)
    {
        SourceIndex = (int)index;
        if (index >= 0)
        {
            var sourceInfo = TileSetSourceInfo;
            //单格页签纹理
            S_Tab1.Instance.SetImage(sourceInfo.GetSourceImage());
            //地形页签
            S_Tab2.Instance.RefreshTerrain(sourceInfo);
        }
    }
    
    //切换笔刷类型
    private void OnChangeBrush(long index)
    {
        var v1 = false;
        var v2 = false;
        var v3 = false;
        if (index == 0) //单格
        {
            v1 = true;
        }
        else if (index == 1) //地形
        {
            v2 = true;
        }
        else if (index == 2) //组合
        {
            v3 = true;
        }

        S_Tab1.Instance.Visible = v1;
        S_Tab2.Instance.Visible = v2;
        S_Tab3.Instance.Visible = v3;
    }
}