Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / mapEditorCreatePreinstall / MapEditorCreatePreinstallPanel.cs
  1. using System.Collections.Generic;
  2. using System.Text.RegularExpressions;
  3. using Godot;
  4.  
  5. namespace UI.MapEditorCreatePreinstall;
  6.  
  7. public partial class MapEditorCreatePreinstallPanel : MapEditorCreatePreinstall
  8. {
  9. private RoomPreinstallInfo _roomPreinstallInfo;
  10. private DungeonRoomType _roomType;
  11.  
  12. /// <summary>
  13. /// 初始化房间预设数据, 用于创建预设
  14. /// </summary>
  15. public void InitData(DungeonRoomType roomType)
  16. {
  17. _roomType = roomType;
  18. }
  19. /// <summary>
  20. /// 初始化房间预设数据, 用于编辑预设
  21. /// </summary>
  22. public void InitData(DungeonRoomType roomType, RoomPreinstallInfo preinstallInfo)
  23. {
  24. InitData(roomType);
  25. _roomPreinstallInfo = preinstallInfo;
  26. S_PreinstallNameInput.Instance.Text = preinstallInfo.Name;
  27. S_AutoCheckInput.Instance.ButtonPressed = preinstallInfo.AutoFill;
  28. S_WeightInput.Instance.Value = preinstallInfo.Weight;
  29. S_RemarkInput.Instance.Text = preinstallInfo.Remark;
  30. }
  31.  
  32. /// <summary>
  33. /// 填完数据后创建数据进行验证并创建数据对象, 如果验证失败, 则返回null
  34. /// </summary>
  35. public RoomPreinstallInfo GetRoomPreinstall(List<RoomPreinstallInfo> roomPreinstalls)
  36. {
  37. RoomPreinstallInfo data;
  38. if (_roomPreinstallInfo != null) //编辑数据
  39. {
  40. data = _roomPreinstallInfo;
  41. data.Name = S_PreinstallNameInput.Instance.Text;
  42. //检查名称是否合规
  43. if (string.IsNullOrEmpty(data.Name))
  44. {
  45. EditorWindowManager.ShowTips("错误", "预设名称不能为空!");
  46. return null;
  47. }
  48. var index = roomPreinstalls.FindIndex(preinstall => preinstall.Name == data.Name && preinstall != _roomPreinstallInfo);
  49. if (index >= 0)
  50. {
  51. EditorWindowManager.ShowTips("错误", "当前房间已经存在预设名称'" + data.Name + "', 请使用其他名称!");
  52. return null;
  53. }
  54. data.AutoFill = S_AutoCheckInput.Instance.ButtonPressed;
  55. data.Remark = S_RemarkInput.Instance.Text;
  56. data.Weight = (int)S_WeightInput.Instance.Value;
  57. }
  58. else //创建数据
  59. {
  60. data = new RoomPreinstallInfo();
  61. data.Name = S_PreinstallNameInput.Instance.Text;
  62. //检查名称是否合规
  63. if (string.IsNullOrEmpty(data.Name))
  64. {
  65. EditorWindowManager.ShowTips("错误", "预设名称不能为空!");
  66. return null;
  67. }
  68.  
  69. var index = roomPreinstalls.FindIndex(preinstall => preinstall.Name == data.Name);
  70. if (index >= 0)
  71. {
  72. EditorWindowManager.ShowTips("错误", "当前房间已经存在预设名称'" + data.Name + "', 请使用其他名称!");
  73. return null;
  74. }
  75.  
  76. data.AutoFill = S_AutoCheckInput.Instance.ButtonPressed;
  77. data.Remark = S_RemarkInput.Instance.Text;
  78. data.Weight = (int)S_WeightInput.Instance.Value;
  79. //预加载波
  80. data.InitWaveList();
  81. //初始化特殊标记
  82. data.InitSpecialMark(_roomType);
  83. }
  84. return data;
  85. }
  86. }