Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / manager / EditorWindowManager.cs
@小李xl 小李xl on 7 Aug 2023 6 KB 更新Ui生成器
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4. using Godot;
  5. using UI.EditorTips;
  6. using UI.EditorWindow;
  7. using UI.MapEditorCreateGroup;
  8. using UI.MapEditorCreateMark;
  9. using UI.MapEditorCreatePreinstall;
  10. using UI.MapEditorCreateRoom;
  11.  
  12. public static class EditorWindowManager
  13. {
  14. /// <summary>
  15. /// 弹出通用提示面板
  16. /// </summary>
  17. /// <param name="title">标题</param>
  18. /// <param name="message">显示内容</param>
  19. /// <param name="onClose">关闭时的回调</param>
  20. public static void ShowTips(string title, string message, Action onClose = null)
  21. {
  22. var window = UiManager.Open_EditorWindow();
  23. window.SetWindowTitle(title);
  24. if (onClose != null)
  25. {
  26. window.CloseEvent += onClose;
  27. }
  28. window.SetButtonList(
  29. new EditorWindowPanel.ButtonData("确定", () =>
  30. {
  31. window.CloseWindow();
  32. })
  33. );
  34. var body = window.OpenBody<EditorTipsPanel>(UiManager.UiName.EditorTips);
  35. body.SetMessage(message);
  36. }
  37.  
  38. /// <summary>
  39. /// 弹出询问窗口
  40. /// </summary>
  41. /// <param name="title">标题</param>
  42. /// <param name="message">显示内容</param>
  43. /// <param name="onClose">关闭时的回调, 参数如果为 true 表示点击了确定</param>
  44. public static void ShowConfirm(string title, string message, Action<bool> onClose)
  45. {
  46. var window = UiManager.Open_EditorWindow();
  47. window.SetWindowTitle(title);
  48. window.CloseEvent += () =>
  49. {
  50. onClose(false);
  51. };
  52. window.SetButtonList(
  53. new EditorWindowPanel.ButtonData("确定", () =>
  54. {
  55. window.CloseWindow();
  56. onClose(true);
  57. }),
  58. new EditorWindowPanel.ButtonData("取消", () =>
  59. {
  60. window.CloseWindow();
  61. onClose(false);
  62. })
  63. );
  64. var body = window.OpenBody<EditorTipsPanel>(UiManager.UiName.EditorTips);
  65. body.SetMessage(message);
  66. }
  67.  
  68. /// <summary>
  69. /// 打开创建地牢组弹窗
  70. /// </summary>
  71. /// <param name="onCreateGroup">创建成功时回调</param>
  72. public static void ShowCreateGroup(Action<DungeonRoomGroup> onCreateGroup)
  73. {
  74. var window = UiManager.Open_EditorWindow();
  75. window.SetWindowTitle("创建地牢组");
  76. window.SetWindowSize(new Vector2I(700, 500));
  77. var body = window.OpenBody<MapEditorCreateGroupPanel>(UiManager.UiName.MapEditorCreateGroup);
  78. window.SetButtonList(
  79. new EditorWindowPanel.ButtonData("确定", () =>
  80. {
  81. //获取填写的数据, 并创建ui
  82. var groupInfo = body.GetGroupInfo();
  83. if (groupInfo != null)
  84. {
  85. window.CloseWindow();
  86. onCreateGroup(groupInfo);
  87. }
  88. }),
  89. new EditorWindowPanel.ButtonData("取消", () =>
  90. {
  91. window.CloseWindow();
  92. })
  93. );
  94. }
  95. /// <summary>
  96. /// 打开创建地牢房间弹窗
  97. /// </summary>
  98. /// <param name="groupName">选择的组名称, 如果不需要有选择的项, 则传 null</param>
  99. /// <param name="roomType">选择的房间类型</param>
  100. /// <param name="onCreateRoom">创建成功时回调</param>
  101. public static void ShowCreateRoom(string groupName, int roomType, Action<DungeonRoomSplit> onCreateRoom)
  102. {
  103. var window = UiManager.Open_EditorWindow();
  104. window.SetWindowTitle("创建地牢房间");
  105. window.SetWindowSize(new Vector2I(700, 600));
  106. var body = window.OpenBody<MapEditorCreateRoomPanel>(UiManager.UiName.MapEditorCreateRoom);
  107. if (groupName != null)
  108. {
  109. body.SetSelectGroup(groupName);
  110. }
  111. body.SetSelectType(roomType);
  112. window.SetButtonList(
  113. new EditorWindowPanel.ButtonData("确定", () =>
  114. {
  115. //获取填写的数据, 并创建ui
  116. var roomSplit = body.GetRoomInfo();
  117. if (roomSplit != null)
  118. {
  119. window.CloseWindow();
  120. onCreateRoom(roomSplit);
  121. }
  122. }),
  123. new EditorWindowPanel.ButtonData("取消", () =>
  124. {
  125. window.CloseWindow();
  126. })
  127. );
  128. }
  129.  
  130. /// <summary>
  131. /// 打开创建房间预设弹窗
  132. /// </summary>
  133. /// <param name="list">当前房间已经包含的所有预设列表</param>
  134. /// <param name="onCreatePreinstall">创建成功时的回调</param>
  135. public static void ShowCreatePreinstall(List<RoomPreinstall> list, Action<RoomPreinstall> onCreatePreinstall)
  136. {
  137. var window = UiManager.Open_EditorWindow();
  138. window.SetWindowTitle("创建房间预设");
  139. window.SetWindowSize(new Vector2I(700, 600));
  140. var body = window.OpenBody<MapEditorCreatePreinstallPanel>(UiManager.UiName.MapEditorCreatePreinstall);
  141. window.SetButtonList(
  142. new EditorWindowPanel.ButtonData("确定", () =>
  143. {
  144. var roomPreinstall = body.GetRoomPreinstall(list);
  145. if (roomPreinstall != null)
  146. {
  147. window.CloseWindow();
  148. onCreatePreinstall(roomPreinstall);
  149. }
  150. }),
  151. new EditorWindowPanel.ButtonData("取消", () =>
  152. {
  153. window.CloseWindow();
  154. })
  155. );
  156. }
  157.  
  158. public static void ShowCreateMark()
  159. {
  160. var window = UiManager.Open_EditorWindow();
  161. window.SetWindowTitle("创建标记");
  162. window.SetWindowSize(new Vector2I(700, 600));
  163. var body = window.OpenBody<MapEditorCreateMarkPanel>(UiManager.UiName.MapEditorCreateMark);
  164. window.SetButtonList(
  165. new EditorWindowPanel.ButtonData("确定", () =>
  166. {
  167. // var roomPreinstall = body.GetRoomPreinstall(list);
  168. // if (roomPreinstall != null)
  169. // {
  170. // window.CloseWindow();
  171. // onCreatePreinstall(roomPreinstall);
  172. // }
  173. }),
  174. new EditorWindowPanel.ButtonData("取消", () =>
  175. {
  176. window.CloseWindow();
  177. })
  178. );
  179. }
  180. public static void ShowSelectObject(string title)
  181. {
  182. var window = UiManager.Open_EditorWindow();
  183. window.S_Window.Instance.Size = new Vector2I(900, 600);
  184. window.SetWindowTitle(title);
  185. window.OpenBody(UiManager.UiName.MapEditorSelectObject);
  186. }
  187. }