Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / tileSetEditorProject / TileButtonCell.cs

using Godot;
using UI.TileSetEditor;

namespace UI.TileSetEditorProject;

public class TileButtonCell : UiCell<TileSetEditorProject.TileButton, TileSetSplit>
{
    public override void OnInit()
    {
        CellNode.L_SelectTexture.Instance.Visible = false;
    }

    public override void OnSetData(TileSetSplit data)
    {
        CellNode.L_TileName.Instance.Text = data.TileSetInfo.Name;
        //检测是否有错误
        var hasError = false;
        foreach (var sourceInfo in data.TileSetInfo.Sources)
        {
            if (string.IsNullOrEmpty(sourceInfo.SourcePath))
            {
                hasError = true;
                break;
            }

            foreach (var terrainInfo in sourceInfo.Terrain)
            {
                if (!terrainInfo.Ready)
                {
                    hasError = true;
                    break;
                }
            }
        }

        if (hasError)
        {
            CellNode.L_Icon.Instance.Texture = ResourceManager.LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_Error_mini_png);
        }
        else
        {
            CellNode.L_Icon.Instance.Texture = ResourceManager.LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_Success_mini_png);
        }
    }

    public override void OnDoubleClick()
    {
        //打开TileSet编辑器面板
        var tileSetEditorPanel = CellNode.UiPanel.ParentUi.OpenNextUi<TileSetEditorPanel>(UiManager.UiNames.TileSetEditor);
        tileSetEditorPanel.InitData(Data);
    }

    public override void OnSelect()
    {
        CellNode.L_SelectTexture.Instance.Visible = true;
        var previewGrid = CellNode.UiPanel.PreviewGrid;
        previewGrid.SetDataList(Data.TileSetInfo.Sources.ToArray());
    }

    public override void OnUnSelect()
    {
        CellNode.L_SelectTexture.Instance.Visible = false;
    }
}