Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / mapEditorCreatePreinstall / MapEditorCreatePreinstallPanel.cs
@小李xl 小李xl on 11 Dec 2023 3 KB 创建房间时添加默认预设
  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_WeightInput.Instance.Value = preinstallInfo.Weight;
  28. S_RemarkInput.Instance.Text = preinstallInfo.Remark;
  29. }
  30.  
  31. /// <summary>
  32. /// 填完数据后创建数据进行验证并创建数据对象, 如果验证失败, 则返回null
  33. /// </summary>
  34. public RoomPreinstallInfo GetRoomPreinstall(List<RoomPreinstallInfo> roomPreinstalls)
  35. {
  36. RoomPreinstallInfo data;
  37. if (_roomPreinstallInfo != null) //编辑数据
  38. {
  39. data = _roomPreinstallInfo;
  40. data.Name = S_PreinstallNameInput.Instance.Text;
  41. //检查名称是否合规
  42. if (string.IsNullOrEmpty(data.Name))
  43. {
  44. EditorWindowManager.ShowTips("错误", "预设名称不能为空!");
  45. return null;
  46. }
  47. var index = roomPreinstalls.FindIndex(preinstall => preinstall.Name == data.Name && preinstall != _roomPreinstallInfo);
  48. if (index >= 0)
  49. {
  50. EditorWindowManager.ShowTips("错误", "当前房间已经存在预设名称'" + data.Name + "', 请使用其他名称!");
  51. return null;
  52. }
  53. data.Remark = S_RemarkInput.Instance.Text;
  54. data.Weight = (int)S_WeightInput.Instance.Value;
  55. }
  56. else //创建数据
  57. {
  58. data = new RoomPreinstallInfo();
  59. data.Name = S_PreinstallNameInput.Instance.Text;
  60. //检查名称是否合规
  61. if (string.IsNullOrEmpty(data.Name))
  62. {
  63. EditorWindowManager.ShowTips("错误", "预设名称不能为空!");
  64. return null;
  65. }
  66.  
  67. var index = roomPreinstalls.FindIndex(preinstall => preinstall.Name == data.Name);
  68. if (index >= 0)
  69. {
  70. EditorWindowManager.ShowTips("错误", "当前房间已经存在预设名称'" + data.Name + "', 请使用其他名称!");
  71. return null;
  72. }
  73.  
  74. data.Remark = S_RemarkInput.Instance.Text;
  75. data.Weight = (int)S_WeightInput.Instance.Value;
  76. //预加载波
  77. data.InitWaveList();
  78. //初始化特殊标记
  79. data.InitSpecialMark(_roomType);
  80. }
  81. return data;
  82. }
  83. }