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);