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); } }