diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorTools/DoorDragArea.cs b/DungeonShooting_Godot/src/game/ui/mapEditorTools/DoorDragArea.cs index 0a011ee..381f3ac 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorTools/DoorDragArea.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorTools/DoorDragArea.cs @@ -233,8 +233,8 @@ //刷新区域位置 SetDoorAreaSize(areaSize); - //起始点坐标必须要小于终点坐标 - if (position.X < endPosition.X) + //起始点坐标必须要小于终点坐标, 且起点坐标大于0 + if (position.X < endPosition.X && position.X >= 0) { //区域必须大于等于 4 格宽度 if (areaSize >= GameConfig.TileCellSize * 4) @@ -321,8 +321,8 @@ //刷新区域位置 SetDoorAreaSize(areaSize); - //终点坐标必须要大于起始点坐标 - if (position.X > startPosition.X) + //终点坐标必须要大于起始点坐标, 且终点坐标必须小于宽度 + if (position.X > startPosition.X && position.X < startPosition.X + _areaSize) { //区域必须大于等于 4 格宽度 if (areaSize >= GameConfig.TileCellSize * 4) diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorTools/MapEditorToolsPanel.cs b/DungeonShooting_Godot/src/game/ui/mapEditorTools/MapEditorToolsPanel.cs index 652e86c..b695bc5 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorTools/MapEditorToolsPanel.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorTools/MapEditorToolsPanel.cs @@ -42,6 +42,18 @@ S_HoverPreviewRoot.Instance.Visible = ActiveHoverArea != null && !DoorHoverArea.IsDrag; } + public DoorHoverArea GetDoorHoverAreaByDir(DoorDirection direction) + { + switch (direction) + { + case DoorDirection.E: return S_E_HoverArea.Instance; + case DoorDirection.N: return S_N_HoverArea.Instance; + case DoorDirection.W: return S_W_HoverArea.Instance; + case DoorDirection.S: return S_S_HoverArea.Instance; + } + return null; + } + /// /// 设置活动的鼠标悬停的区域 /// @@ -67,7 +79,7 @@ /// 区域大小, 单位: 像素 public DoorToolTemplate CreateDoorTool(Vector2 position, DoorDirection direction, int start, int size) { - var inst = CreateDoorToolInstance(); + var inst = CreateDoorToolInstance(GetDoorHoverAreaByDir(direction)); inst.Instance.SetDoorAreaPosition(position); inst.Instance.SetDoorAreaDirection(direction); inst.Instance.SetDoorAreaRange(start, size); @@ -85,7 +97,7 @@ public DoorToolTemplate CreateDragDoorTool(Vector2 position, DoorDirection direction, int start, Action onSubmit, Action onCancel) { - var inst = CreateDoorToolInstance(); + var inst = CreateDoorToolInstance(GetDoorHoverAreaByDir(direction)); inst.Instance.SetDoorAreaPosition(position); inst.Instance.SetDoorAreaDirection(direction); inst.Instance.SetDoorAreaRange(start, 0); @@ -137,7 +149,7 @@ S_W_HoverArea.Instance.Size = new Vector2(size.Y - GameConfig.TileCellSize * 2, S_W_HoverArea.Instance.Size.Y); } - private DoorToolTemplate CreateDoorToolInstance() + private DoorToolTemplate CreateDoorToolInstance(DoorHoverArea doorHoverArea) { var doorTool = S_DoorToolTemplate.Clone(); S_DoorToolRoot.Instance.AddChild(doorTool.Instance);