Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / editorWindow / EditorWindowPanel.cs
@lijincheng lijincheng on 25 Jul 2023 2 KB 调整部分 Ui 函数名称
  1. using System;
  2. using Godot;
  3.  
  4. namespace UI.EditorWindow;
  5.  
  6. public partial class EditorWindowPanel : EditorWindow
  7. {
  8.  
  9. public class ButtonData
  10. {
  11. /// <summary>
  12. /// 显示文本
  13. /// </summary>
  14. public string Text;
  15. /// <summary>
  16. /// 点击的回调
  17. /// </summary>
  18. public Action Callback;
  19.  
  20. public ButtonData(string text, Action callback)
  21. {
  22. Text = text;
  23. Callback = callback;
  24. }
  25. }
  26. /// <summary>
  27. /// 关闭窗口时回调
  28. /// </summary>
  29. public event Action CloseEvent;
  30.  
  31. private UiGrid<EditorWindow.CustomButton, ButtonData> _uiGrid;
  32.  
  33. public override void OnCreateUi()
  34. {
  35. S_CustomButton.Instance.Visible = false;
  36. }
  37.  
  38. public override void OnShowUi()
  39. {
  40. S_Window.Instance.CloseRequested += CloseWindow;
  41. }
  42.  
  43. public override void OnHideUi()
  44. {
  45. S_Window.Instance.CloseRequested -= CloseWindow;
  46. }
  47.  
  48. /// <summary>
  49. /// 设置自定义按钮
  50. /// </summary>
  51. public void SetButtonList(params ButtonData[] buttons)
  52. {
  53. if (_uiGrid == null)
  54. {
  55. S_CustomButton.Instance.Visible = true;
  56. _uiGrid = new UiGrid<CustomButton, ButtonData>(S_CustomButton, typeof(CustomButtonCell));
  57. _uiGrid.SetHorizontalExpand(true);
  58. }
  59. _uiGrid.SetColumns(buttons.Length);
  60. _uiGrid.SetDataList(buttons);
  61. }
  62.  
  63. /// <summary>
  64. /// 打开子Ui并放入 Body 节点中
  65. /// </summary>
  66. /// <param name="uiName">Ui名称</param>
  67. public UiBase OpenBody(string uiName)
  68. {
  69. var nestedUi = S_Body.OpenNestedUi(uiName);
  70. S_Window.Instance.Popup();
  71. return nestedUi;
  72. }
  73. /// <summary>
  74. /// 打开子Ui并放入 Body 节点中
  75. /// </summary>
  76. /// <param name="uiName">Ui名称</param>
  77. public T OpenBody<T>(string uiName) where T : UiBase
  78. {
  79. return (T)OpenBody(uiName);
  80. }
  81.  
  82. /// <summary>
  83. /// 设置标题
  84. /// </summary>
  85. public void SetWindowTitle(string title)
  86. {
  87. S_Window.Instance.Title = title;
  88. }
  89.  
  90. /// <summary>
  91. /// 设置窗体大小
  92. /// </summary>
  93. public void SetWindowSize(Vector2I size)
  94. {
  95. S_Window.Instance.Size = size;
  96. }
  97.  
  98. /// <summary>
  99. /// 设置窗体最小大小
  100. /// </summary>
  101. public void SetWindowMinSize(Vector2I size)
  102. {
  103. S_Window.Instance.MinSize = size;
  104. }
  105.  
  106. /// <summary>
  107. /// 关闭窗口
  108. /// </summary>
  109. public void CloseWindow()
  110. {
  111. if (CloseEvent != null)
  112. {
  113. CloseEvent();
  114. }
  115. Destroy();
  116. }
  117. }