Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / tileSetEditorProject / TileSetEditorProjectPanel.cs
@小李xl 小李xl on 7 Jan 2024 1 KB TileSet管理器, 开发中
using System.IO;
using System.Text.Json;
using Godot;

namespace UI.TileSetEditorProject;

public partial class TileSetEditorProjectPanel : TileSetEditorProject
{
    /// <summary>
    /// TileSet列表
    /// </summary>
    public UiGrid<TileButton, TileSetSplit> Grid { get; private set; }
    
    /// <summary>
    /// TileSet Source 预览列表
    /// </summary>
    public UiGrid<Preview, TileSetSourceInfo> PreviewGrid { get; private set; }
    
    public override void OnCreateUi()
    {
        S_Back.Instance.Visible = PrevUi != null;
        S_Back.Instance.Pressed += () =>
        {
            OpenPrevUi();
        };

        S_TileSearchButton.Instance.Pressed += OnSearchClick;

        Grid = CreateUiGrid<TileButton, TileSetSplit, TileButtonCell>(S_TileButton);
        Grid.SetColumns(1);
        Grid.SetCellOffset(new Vector2I(0, 5));
        Grid.SetHorizontalExpand(true);

        PreviewGrid = CreateUiGrid<Preview, TileSetSourceInfo, PreviewCell>(S_Preview);
        PreviewGrid.SetColumns(1);
        PreviewGrid.SetCellOffset(new Vector2I(0, 15));
        PreviewGrid.SetHorizontalExpand(true);
        
        //初始化数据
        OnSearchClick();
    }

    public override void OnShowUi()
    {
        OnSearchClick();
    }

    /// <summary>
    /// 刷新数据
    /// </summary>
    public void SearchData(string text)
    {
        Grid.RemoveAll();
        PreviewGrid.RemoveAll();
        text = text.ToLower();
        foreach (var tileSetSplit in GameApplication.Instance.TileSetConfig)
        {
            if (text.Length == 0 || tileSetSplit.Value.TileSetInfo.Name.ToLower().Contains(text))
            {
                Grid.Add(tileSetSplit.Value);
            }
        }
    }
    
    private void OnSearchClick()
    {
        SearchData(S_TileSearchInput.Instance.Text);
    }
}