diff --git a/DungeonShooting_Godot/prefab/ui/TileSetEditorTerrain.tscn b/DungeonShooting_Godot/prefab/ui/TileSetEditorTerrain.tscn
index 449bd53..a436e21 100644
--- a/DungeonShooting_Godot/prefab/ui/TileSetEditorTerrain.tscn
+++ b/DungeonShooting_Godot/prefab/ui/TileSetEditorTerrain.tscn
@@ -1,10 +1,11 @@
-[gd_scene load_steps=14 format=3 uid="uid://dfqb73y4br8yd"]
+[gd_scene load_steps=15 format=3 uid="uid://dfqb73y4br8yd"]
[ext_resource type="Script" path="res://src/game/ui/tileSetEditorTerrain/TileSetEditorTerrainPanel.cs" id="1_6jjk7"]
[ext_resource type="Texture2D" uid="uid://n4atvj5fkcpg" path="res://resource/sprite/ui/commonIcon/Add.png" id="2_ns54l"]
[ext_resource type="Script" path="res://src/game/ui/tileSetEditorTerrain/down/TileEditArea.cs" id="2_ynf0r"]
[ext_resource type="Script" path="res://src/game/common/ui/EditorMaskBrush.cs" id="3_gydh0"]
[ext_resource type="Texture2D" uid="uid://c5778ntk2rdon" path="res://resource/sprite/ui/commonIcon/Delete.png" id="3_jn1bd"]
+[ext_resource type="Texture2D" uid="uid://dggb6p4sdmfry" path="res://resource/sprite/ui/commonIcon/Edit.png" id="3_xmuhh"]
[ext_resource type="Texture2D" uid="uid://bn47bmilcw4x0" path="res://resource/sprite/ui/commonIcon/Select2.png" id="4_ka47m"]
[ext_resource type="Script" path="res://src/game/ui/tileSetEditorTerrain/up/TileEditTerrain.cs" id="5_0x7yx"]
[ext_resource type="Texture2D" uid="uid://d2wslibovwv7w" path="res://resource/sprite/ui/commonIcon/CenterTool.png" id="5_08bc4"]
@@ -50,7 +51,7 @@
grow_vertical = 2
[node name="TopTab" type="Panel" parent="VSplitContainer/PanelTop/HSplitContainer"]
-custom_minimum_size = Vector2(250, 0)
+custom_minimum_size = Vector2(270, 0)
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="VSplitContainer/PanelTop/HSplitContainer/TopTab"]
@@ -78,6 +79,10 @@
layout_mode = 2
icon = ExtResource("2_ns54l")
+[node name="EditButton" type="Button" parent="VSplitContainer/PanelTop/HSplitContainer/TopTab/VBoxContainer/HBoxContainer"]
+layout_mode = 2
+icon = ExtResource("3_xmuhh")
+
[node name="DeleteButton" type="Button" parent="VSplitContainer/PanelTop/HSplitContainer/TopTab/VBoxContainer/HBoxContainer"]
layout_mode = 2
icon = ExtResource("3_jn1bd")
diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrain.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrain.cs
index 66467f8..d87f6ff 100644
--- a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrain.cs
+++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrain.cs
@@ -63,6 +63,15 @@
}
///
+ /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelTop.HSplitContainer.TopTab.VBoxContainer.HBoxContainer.EditButton
+ ///
+ public class EditButton : UiNode
+ {
+ public EditButton(TileSetEditorTerrainPanel uiPanel, Godot.Button node) : base(uiPanel, node) { }
+ public override EditButton Clone() => new (UiPanel, (Godot.Button)Instance.Duplicate());
+ }
+
+ ///
/// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelTop.HSplitContainer.TopTab.VBoxContainer.HBoxContainer.DeleteButton
///
public class DeleteButton : UiNode
@@ -103,6 +112,19 @@
private AddButton _L_AddButton;
///
+ /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.HSplitContainer.TopTab.VBoxContainer.EditButton
+ ///
+ public EditButton L_EditButton
+ {
+ get
+ {
+ if (_L_EditButton == null) _L_EditButton = new EditButton(UiPanel, Instance.GetNode("EditButton"));
+ return _L_EditButton;
+ }
+ }
+ private EditButton _L_EditButton;
+
+ ///
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.HSplitContainer.TopTab.VBoxContainer.DeleteButton
///
public DeleteButton L_DeleteButton
@@ -839,6 +861,11 @@
public AddButton S_AddButton => L_VSplitContainer.L_PanelTop.L_HSplitContainer.L_TopTab.L_VBoxContainer.L_HBoxContainer.L_AddButton;
///
+ /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.HSplitContainer.TopTab.VBoxContainer.HBoxContainer.EditButton
+ ///
+ public EditButton S_EditButton => L_VSplitContainer.L_PanelTop.L_HSplitContainer.L_TopTab.L_VBoxContainer.L_HBoxContainer.L_EditButton;
+
+ ///
/// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.HSplitContainer.TopTab.VBoxContainer.HBoxContainer.DeleteButton
///
public DeleteButton S_DeleteButton => L_VSplitContainer.L_PanelTop.L_HSplitContainer.L_TopTab.L_VBoxContainer.L_HBoxContainer.L_DeleteButton;
diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrainPanel.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrainPanel.cs
index bedcdd7..dd75542 100644
--- a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrainPanel.cs
+++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrainPanel.cs
@@ -72,10 +72,16 @@
TerrainGridMiddle = InitTopGrid(S_TerrainRoot.L_TerrainTexture2.Instance, GameConfig.TerrainBitMiddle, TileSetTerrainInfo.MiddleLayerType);
TerrainGridFloor = InitTopGrid(S_TerrainRoot.L_TerrainTexture3.Instance, GameConfig.TerrainBitFloor, TileSetTerrainInfo.FloorLayerType);
+ //删除地形按钮
+ S_DeleteButton.Instance.Pressed += OnDeleteTerrainClick;
+ //添加地形按钮
+ S_AddButton.Instance.Pressed += OnAddTerrainClick;
+
OnSetTileTexture(EditorPanel.Texture);
OnChangeTileSetBgColor(EditorPanel.BgColor);
OnChangeTerrainType(-1);
+ //改变选中的地形
TerrainTabGrid.SelectEvent += OnChangeTerrain;
}
@@ -266,7 +272,7 @@
if (terrain.TerrainType == 0) //选中47个Terrain
{
TerrainGrid3x3.ForEach(cell => SetTerrainCellData(terrain, cell));
- if (EditorPanel.TileSetSourceIndex == 0) //选中Main Source
+ if (EditorPanel.TileSetSourceIndex == 0 && CurrTerrainIndex == 0) //选中Main Source
{
TerrainGridMiddle.ForEach(cell => SetTerrainCellData(terrain, cell));
TerrainGridFloor.ForEach(cell => SetTerrainCellData(terrain, cell));
@@ -292,7 +298,7 @@
///
private void OnChangeTerrainType(long index)
{
- if (EditorPanel.TileSetSourceIndex == 0) //选中 Main Source
+ if (EditorPanel.TileSetSourceIndex == 0 && CurrTerrainIndex == 0) //选中 Main Source
{
S_TerrainTexture2.Instance.Visible = true;
S_TerrainTexture3.Instance.Visible = true;
@@ -331,4 +337,32 @@
TerrainGrid2x2.Visible = false;
}
}
+
+ //删除地形
+ private void OnDeleteTerrainClick()
+ {
+ if (EditorPanel.TileSetSourceIndex == 0 && CurrTerrainIndex == 0) //不能删除 Main Terrain
+ {
+ EditorWindowManager.ShowTips("警告", "不允许删 Main Terrain!");
+ return;
+ }
+
+ var terrain = CurrTerrain;
+ if (terrain != null)
+ {
+ EditorWindowManager.ShowConfirm("提示", $"是否删除地形'{terrain.Name}'?", (v) =>
+ {
+ if (v)
+ {
+ //执行删除操作
+ }
+ });
+ }
+ }
+
+ //创建地形
+ private void OnAddTerrainClick()
+ {
+
+ }
}