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() + { + + } }