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 RoomPreinstall _roomPreinstall;
  10. /// <summary>
  11. /// 初始化房间预设数据, 用于编辑预设
  12. /// </summary>
  13. public void InitData(RoomPreinstall preinstall)
  14. {
  15. _roomPreinstall = preinstall;
  16. S_PreinstallNameInput.Instance.Text = preinstall.Name;
  17. S_WeightInput.Instance.Value = preinstall.Weight;
  18. S_RemarkInput.Instance.Text = preinstall.Remark;
  19. }
  20. /// <summary>
  21. /// 填完数据后创建数据进行验证并创建数据对象, 如果验证失败, 则返回null
  22. /// </summary>
  23. /// <param name="roomPreinstalls"></param>
  24. /// <returns></returns>
  25. public RoomPreinstall GetRoomPreinstall(List<RoomPreinstall> roomPreinstalls)
  26. {
  27. var data = new RoomPreinstall();
  28. data.Name = S_PreinstallNameInput.Instance.Text;
  29. //检查名称是否合规
  30. if (string.IsNullOrEmpty(data.Name))
  31. {
  32. EditorWindowManager.ShowTips("错误", "预设名称不能为空!");
  33. return null;
  34. }
  35.  
  36. var index = roomPreinstalls.FindIndex(preinstall => preinstall.Name == data.Name && preinstall != _roomPreinstall);
  37. if (index >= 0)
  38. {
  39. EditorWindowManager.ShowTips("错误", "当前房间已经存在预设名称'" + data.Name + "', 请使用其他名称!");
  40. return null;
  41. }
  42.  
  43. data.Remark = S_RemarkInput.Instance.Text;
  44. data.Weight = (int)S_WeightInput.Instance.Value;
  45. if (_roomPreinstall != null) //编辑数据
  46. {
  47. data.WaveList = _roomPreinstall.WaveList;
  48. }
  49. else //创建数据
  50. {
  51. //预加载波
  52. data.InitWaveList();
  53. }
  54.  
  55. return data;
  56. }
  57. }