- using System.Collections.Generic;
- using System.Text.RegularExpressions;
- using Godot;
-
- namespace UI.MapEditorCreatePreinstall;
-
- public partial class MapEditorCreatePreinstallPanel : MapEditorCreatePreinstall
- {
- private RoomPreinstallInfo _roomPreinstallInfo;
- private DungeonRoomType _roomType;
-
- /// <summary>
- /// 初始化房间预设数据, 用于创建预设
- /// </summary>
- public void InitData(DungeonRoomType roomType)
- {
- _roomType = roomType;
- }
-
- /// <summary>
- /// 初始化房间预设数据, 用于编辑预设
- /// </summary>
- public void InitData(DungeonRoomType roomType, RoomPreinstallInfo preinstallInfo)
- {
- InitData(roomType);
- _roomPreinstallInfo = preinstallInfo;
- S_PreinstallNameInput.Instance.Text = preinstallInfo.Name;
- S_AutoCheckInput.Instance.ButtonPressed = preinstallInfo.AutoFill;
- S_WeightInput.Instance.Value = preinstallInfo.Weight;
- S_RemarkInput.Instance.Text = preinstallInfo.Remark;
- }
-
- /// <summary>
- /// 填完数据后创建数据进行验证并创建数据对象, 如果验证失败, 则返回null
- /// </summary>
- public RoomPreinstallInfo GetRoomPreinstall(List<RoomPreinstallInfo> roomPreinstalls)
- {
- RoomPreinstallInfo data;
- if (_roomPreinstallInfo != null) //编辑数据
- {
- data = _roomPreinstallInfo;
- data.Name = S_PreinstallNameInput.Instance.Text;
- //检查名称是否合规
- if (string.IsNullOrEmpty(data.Name))
- {
- EditorWindowManager.ShowTips("错误", "预设名称不能为空!");
- return null;
- }
- var index = roomPreinstalls.FindIndex(preinstall => preinstall.Name == data.Name && preinstall != _roomPreinstallInfo);
- if (index >= 0)
- {
- EditorWindowManager.ShowTips("错误", "当前房间已经存在预设名称'" + data.Name + "', 请使用其他名称!");
- return null;
- }
-
- data.AutoFill = S_AutoCheckInput.Instance.ButtonPressed;
- data.Remark = S_RemarkInput.Instance.Text;
- data.Weight = (int)S_WeightInput.Instance.Value;
- }
- else //创建数据
- {
- data = new RoomPreinstallInfo();
- data.Name = S_PreinstallNameInput.Instance.Text;
- //检查名称是否合规
- if (string.IsNullOrEmpty(data.Name))
- {
- EditorWindowManager.ShowTips("错误", "预设名称不能为空!");
- return null;
- }
-
- var index = roomPreinstalls.FindIndex(preinstall => preinstall.Name == data.Name);
- if (index >= 0)
- {
- EditorWindowManager.ShowTips("错误", "当前房间已经存在预设名称'" + data.Name + "', 请使用其他名称!");
- return null;
- }
-
- data.AutoFill = S_AutoCheckInput.Instance.ButtonPressed;
- data.Remark = S_RemarkInput.Instance.Text;
- data.Weight = (int)S_WeightInput.Instance.Value;
- //预加载波
- data.InitWaveList();
- //初始化特殊标记
- data.InitSpecialMark(_roomType);
- }
- return data;
- }
- }