Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / tileSetEditorProject / TileSetEditorProjectPanel.cs
@小李xl 小李xl on 7 Jan 2024 1 KB TileSet管理器, 开发中
  1. using System.IO;
  2. using System.Text.Json;
  3. using Godot;
  4.  
  5. namespace UI.TileSetEditorProject;
  6.  
  7. public partial class TileSetEditorProjectPanel : TileSetEditorProject
  8. {
  9. /// <summary>
  10. /// TileSet列表
  11. /// </summary>
  12. public UiGrid<TileButton, TileSetSplit> Grid { get; private set; }
  13. /// <summary>
  14. /// TileSet Source 预览列表
  15. /// </summary>
  16. public UiGrid<Preview, TileSetSourceInfo> PreviewGrid { get; private set; }
  17. public override void OnCreateUi()
  18. {
  19. S_Back.Instance.Visible = PrevUi != null;
  20. S_Back.Instance.Pressed += () =>
  21. {
  22. OpenPrevUi();
  23. };
  24.  
  25. S_TileSearchButton.Instance.Pressed += OnSearchClick;
  26.  
  27. Grid = CreateUiGrid<TileButton, TileSetSplit, TileButtonCell>(S_TileButton);
  28. Grid.SetColumns(1);
  29. Grid.SetCellOffset(new Vector2I(0, 5));
  30. Grid.SetHorizontalExpand(true);
  31.  
  32. PreviewGrid = CreateUiGrid<Preview, TileSetSourceInfo, PreviewCell>(S_Preview);
  33. PreviewGrid.SetColumns(1);
  34. PreviewGrid.SetCellOffset(new Vector2I(0, 15));
  35. PreviewGrid.SetHorizontalExpand(true);
  36. //初始化数据
  37. OnSearchClick();
  38. }
  39.  
  40. public override void OnShowUi()
  41. {
  42. OnSearchClick();
  43. }
  44.  
  45. /// <summary>
  46. /// 刷新数据
  47. /// </summary>
  48. public void SearchData(string text)
  49. {
  50. Grid.RemoveAll();
  51. PreviewGrid.RemoveAll();
  52. text = text.ToLower();
  53. foreach (var tileSetSplit in GameApplication.Instance.TileSetConfig)
  54. {
  55. if (text.Length == 0 || tileSetSplit.Value.TileSetInfo.Name.ToLower().Contains(text))
  56. {
  57. Grid.Add(tileSetSplit.Value);
  58. }
  59. }
  60. }
  61. private void OnSearchClick()
  62. {
  63. SearchData(S_TileSearchInput.Instance.Text);
  64. }
  65. }