diff --git a/DungeonShooting_Godot/prefab/ui/TileSetEditor.tscn b/DungeonShooting_Godot/prefab/ui/TileSetEditor.tscn index 4514f01..89d816c 100644 --- a/DungeonShooting_Godot/prefab/ui/TileSetEditor.tscn +++ b/DungeonShooting_Godot/prefab/ui/TileSetEditor.tscn @@ -13,6 +13,7 @@ grow_horizontal = 2 grow_vertical = 2 script = ExtResource("1_rgx4n") +Layer = null [node name="Bg" type="Panel" parent="."] layout_mode = 1 diff --git a/DungeonShooting_Godot/prefab/ui/TileSetEditorTerrain.tscn b/DungeonShooting_Godot/prefab/ui/TileSetEditorTerrain.tscn index 42702d0..b6154e8 100644 --- a/DungeonShooting_Godot/prefab/ui/TileSetEditorTerrain.tscn +++ b/DungeonShooting_Godot/prefab/ui/TileSetEditorTerrain.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=11 format=3 uid="uid://dfqb73y4br8yd"] +[gd_scene load_steps=12 format=3 uid="uid://dfqb73y4br8yd"] [ext_resource type="Script" path="res://src/game/ui/tileSetEditorTerrain/TileSetEditorTerrainPanel.cs" id="1_6jjk7"] [ext_resource type="Script" path="res://src/game/ui/tileSetEditorTerrain/down/TileEditArea.cs" id="2_ynf0r"] @@ -7,6 +7,7 @@ [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"] [ext_resource type="Texture2D" uid="uid://bud6ah5xyey37" path="res://resource/sprite/map/TerrainMask2.png" id="5_xabgh"] +[ext_resource type="Texture2D" uid="uid://chisfq2alcq16" path="res://resource/sprite/map/TerrainMask3.png" id="6_vmj5y"] [ext_resource type="Texture2D" uid="uid://cvjj6jnmxgprw" path="res://resource/sprite/map/TerrainMask.png" id="7_g8dxk"] [ext_resource type="Script" path="res://src/game/ui/tileSetEditorTerrain/up/TerrainBrush.cs" id="7_lmu64"] [ext_resource type="Script" path="res://src/game/ui/tileSetEditorTerrain/up/TerrainCellDropHandler.cs" id="8_7xxcq"] @@ -19,6 +20,7 @@ grow_horizontal = 2 grow_vertical = 2 script = ExtResource("1_6jjk7") +Layer = null [node name="VSplitContainer" type="VSplitContainer" parent="."] layout_mode = 1 @@ -28,13 +30,13 @@ grow_horizontal = 2 grow_vertical = 2 -[node name="LeftBottom2" type="Panel" parent="VSplitContainer"] +[node name="PanelTop" type="Panel" parent="VSplitContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 size_flags_stretch_ratio = 50.0 -[node name="MarginContainer" type="MarginContainer" parent="VSplitContainer/LeftBottom2"] +[node name="MarginContainer" type="MarginContainer" parent="VSplitContainer/PanelTop"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -46,7 +48,7 @@ theme_override_constants/margin_right = 2 theme_override_constants/margin_bottom = 2 -[node name="LeftBottomBg" type="ColorRect" parent="VSplitContainer/LeftBottom2/MarginContainer"] +[node name="TopBg" type="ColorRect" parent="VSplitContainer/PanelTop/MarginContainer"] clip_children = 2 z_index = 1 layout_mode = 2 @@ -54,7 +56,7 @@ color = Color(0.496094, 0.496094, 0.496094, 1) script = ExtResource("5_0x7yx") -[node name="TerrainRoot" type="Control" parent="VSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg"] +[node name="TerrainRoot" type="Control" parent="VSplitContainer/PanelTop/MarginContainer/TopBg"] layout_mode = 1 anchors_preset = 8 anchor_left = 0.5 @@ -63,31 +65,31 @@ anchor_bottom = 0.5 offset_left = -291.0 offset_top = -92.0 -offset_right = -291.0 -offset_bottom = -92.0 +offset_right = -98.0 +offset_bottom = 4.0 grow_horizontal = 2 grow_vertical = 2 scale = Vector2(3, 3) mouse_filter = 2 -[node name="CellRoot" type="Control" parent="VSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg/TerrainRoot"] +[node name="CellRoot" type="Control" parent="VSplitContainer/PanelTop/MarginContainer/TopBg/TerrainRoot"] layout_mode = 3 anchors_preset = 0 offset_right = 1.0 offset_bottom = 1.0 mouse_filter = 2 -[node name="RightCell" type="Control" parent="VSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg/TerrainRoot/CellRoot"] +[node name="RightCell" type="Control" parent="VSplitContainer/PanelTop/MarginContainer/TopBg/TerrainRoot/CellRoot"] anchors_preset = 0 offset_right = 16.0 offset_bottom = 16.0 mouse_filter = 1 script = ExtResource("8_7xxcq") -[node name="CellTexture" type="Sprite2D" parent="VSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg/TerrainRoot/CellRoot/RightCell"] +[node name="CellTexture" type="Sprite2D" parent="VSplitContainer/PanelTop/MarginContainer/TopBg/TerrainRoot/CellRoot/RightCell"] centered = false -[node name="TerrainTexture1" type="TextureRect" parent="VSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg/TerrainRoot"] +[node name="TerrainTexture1" type="TextureRect" parent="VSplitContainer/PanelTop/MarginContainer/TopBg/TerrainRoot"] self_modulate = Color(1, 1, 1, 0.27451) custom_minimum_size = Vector2(192, 64) layout_mode = 1 @@ -96,7 +98,7 @@ mouse_filter = 2 texture = ExtResource("7_g8dxk") -[node name="Label" type="Label" parent="VSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg/TerrainRoot/TerrainTexture1"] +[node name="Label" type="Label" parent="VSplitContainer/PanelTop/MarginContainer/TopBg/TerrainRoot/TerrainTexture1"] layout_mode = 0 offset_top = -10.0 offset_right = 136.0 @@ -104,7 +106,7 @@ scale = Vector2(0.25, 0.25) text = "顶部墙壁" -[node name="TerrainTexture2" type="TextureRect" parent="VSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg/TerrainRoot"] +[node name="TerrainTexture2" type="TextureRect" parent="VSplitContainer/PanelTop/MarginContainer/TopBg/TerrainRoot"] self_modulate = Color(1, 1, 1, 0.27451) custom_minimum_size = Vector2(64, 16) layout_mode = 1 @@ -114,7 +116,7 @@ mouse_filter = 2 texture = ExtResource("5_xabgh") -[node name="Label" type="Label" parent="VSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg/TerrainRoot/TerrainTexture2"] +[node name="Label" type="Label" parent="VSplitContainer/PanelTop/MarginContainer/TopBg/TerrainRoot/TerrainTexture2"] layout_mode = 0 offset_top = -10.0 offset_right = 136.0 @@ -122,18 +124,18 @@ scale = Vector2(0.25, 0.25) text = "侧方墙壁" -[node name="TerrainTexture3" type="TextureRect" parent="VSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg/TerrainRoot"] +[node name="TerrainTexture3" type="TextureRect" parent="VSplitContainer/PanelTop/MarginContainer/TopBg/TerrainRoot"] self_modulate = Color(1, 1, 1, 0.27451) -custom_minimum_size = Vector2(64, 16) +custom_minimum_size = Vector2(16, 16) layout_mode = 1 offset_left = 80.0 offset_top = 80.0 -offset_right = 144.0 +offset_right = 96.0 offset_bottom = 96.0 mouse_filter = 2 -texture = ExtResource("5_xabgh") +texture = ExtResource("6_vmj5y") -[node name="Label" type="Label" parent="VSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg/TerrainRoot/TerrainTexture3"] +[node name="Label" type="Label" parent="VSplitContainer/PanelTop/MarginContainer/TopBg/TerrainRoot/TerrainTexture3"] layout_mode = 0 offset_top = -10.0 offset_right = 136.0 @@ -141,7 +143,7 @@ scale = Vector2(0.25, 0.25) text = "地板" -[node name="Brush" type="Control" parent="VSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg/TerrainRoot"] +[node name="Brush" type="Control" parent="VSplitContainer/PanelTop/MarginContainer/TopBg/TerrainRoot"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -151,7 +153,7 @@ mouse_filter = 2 script = ExtResource("7_lmu64") -[node name="Grid" type="ColorRect" parent="VSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg"] +[node name="Grid" type="ColorRect" parent="VSplitContainer/PanelTop/MarginContainer/TopBg"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -161,7 +163,7 @@ mouse_filter = 2 color = Color(1, 1, 1, 0) -[node name="FocusBtn" type="TextureButton" parent="VSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg"] +[node name="FocusBtn" type="TextureButton" parent="VSplitContainer/PanelTop/MarginContainer/TopBg"] layout_mode = 1 anchors_preset = 1 anchor_left = 1.0 @@ -176,13 +178,13 @@ ignore_texture_size = true stretch_mode = 5 -[node name="LeftBottom" type="Panel" parent="VSplitContainer"] +[node name="PanelBottom" type="Panel" parent="VSplitContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 size_flags_stretch_ratio = 50.0 -[node name="MarginContainer" type="MarginContainer" parent="VSplitContainer/LeftBottom"] +[node name="MarginContainer" type="MarginContainer" parent="VSplitContainer/PanelBottom"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -194,14 +196,14 @@ theme_override_constants/margin_right = 2 theme_override_constants/margin_bottom = 2 -[node name="LeftBg" type="ColorRect" parent="VSplitContainer/LeftBottom/MarginContainer"] +[node name="BottomBg" type="ColorRect" parent="VSplitContainer/PanelBottom/MarginContainer"] clip_children = 2 z_index = 1 layout_mode = 2 color = Color(0.203922, 0.203922, 0.203922, 1) script = ExtResource("2_ynf0r") -[node name="TileTexture" type="TextureRect" parent="VSplitContainer/LeftBottom/MarginContainer/LeftBg"] +[node name="TileTexture" type="TextureRect" parent="VSplitContainer/PanelBottom/MarginContainer/BottomBg"] layout_mode = 1 anchors_preset = 8 anchor_left = 0.5 @@ -213,20 +215,20 @@ scale = Vector2(2, 2) mouse_filter = 2 -[node name="CellRoot" type="Control" parent="VSplitContainer/LeftBottom/MarginContainer/LeftBg/TileTexture"] +[node name="CellRoot" type="Control" parent="VSplitContainer/PanelBottom/MarginContainer/BottomBg/TileTexture"] anchors_preset = 0 offset_right = 1.0 offset_bottom = 1.0 mouse_filter = 2 -[node name="LeftCell" type="TextureButton" parent="VSplitContainer/LeftBottom/MarginContainer/LeftBg/TileTexture/CellRoot"] +[node name="BottomCell" type="TextureButton" parent="VSplitContainer/PanelBottom/MarginContainer/BottomBg/TileTexture/CellRoot"] layout_mode = 0 offset_right = 16.0 offset_bottom = 16.0 mouse_filter = 1 script = ExtResource("3_ssd86") -[node name="MaskBrush" type="Control" parent="VSplitContainer/LeftBottom/MarginContainer/LeftBg/TileTexture"] +[node name="MaskBrush" type="Control" parent="VSplitContainer/PanelBottom/MarginContainer/BottomBg/TileTexture"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -236,7 +238,7 @@ mouse_filter = 2 script = ExtResource("3_gydh0") -[node name="Grid" type="ColorRect" parent="VSplitContainer/LeftBottom/MarginContainer/LeftBg"] +[node name="Grid" type="ColorRect" parent="VSplitContainer/PanelBottom/MarginContainer/BottomBg"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -246,7 +248,7 @@ mouse_filter = 2 color = Color(1, 1, 1, 0) -[node name="FocusBtn" type="TextureButton" parent="VSplitContainer/LeftBottom/MarginContainer/LeftBg"] +[node name="FocusBtn" type="TextureButton" parent="VSplitContainer/PanelBottom/MarginContainer/BottomBg"] layout_mode = 1 anchors_preset = 1 anchor_left = 1.0 diff --git a/DungeonShooting_Godot/resource/sprite/map/TerrainMask3.png b/DungeonShooting_Godot/resource/sprite/map/TerrainMask3.png new file mode 100644 index 0000000..b841f40 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/map/TerrainMask3.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/map/TerrainMask3.png.import b/DungeonShooting_Godot/resource/sprite/map/TerrainMask3.png.import new file mode 100644 index 0000000..a1ece12 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/map/TerrainMask3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://chisfq2alcq16" +path="res://.godot/imported/TerrainMask3.png-20aa76a7c73efe35531ad8d0722d181b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/map/TerrainMask3.png" +dest_files=["res://.godot/imported/TerrainMask3.png-20aa76a7c73efe35531ad8d0722d181b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/DungeonShooting_Godot/src/framework/ui/UiBase.cs b/DungeonShooting_Godot/src/framework/ui/UiBase.cs index 21c4c6b..5987af6 100644 --- a/DungeonShooting_Godot/src/framework/ui/UiBase.cs +++ b/DungeonShooting_Godot/src/framework/ui/UiBase.cs @@ -298,6 +298,25 @@ _uiGrids.Add(uiGrid); return uiGrid; } + + /// + /// 创建一个UiGrid对象, 该Ui对象会在Ui销毁时自动销毁 + /// + /// 模板对象 + /// 父节点 + /// 模板对象类型 + /// 存放的数据类型 + /// Cell处理类 + public UiGrid CreateUiGrid(TNode template, Node parent) where TNode : IUiCellNode where TCell : UiCell + { + var uiGrid = new UiGrid(template, parent, typeof(TCell)); + if (_uiGrids == null) + { + _uiGrids = new List(); + } + _uiGrids.Add(uiGrid); + return uiGrid; + } public sealed override void _Process(double delta) { diff --git a/DungeonShooting_Godot/src/framework/ui/grid/UiGrid.cs b/DungeonShooting_Godot/src/framework/ui/grid/UiGrid.cs index 9c9df08..c341827 100644 --- a/DungeonShooting_Godot/src/framework/ui/grid/UiGrid.cs +++ b/DungeonShooting_Godot/src/framework/ui/grid/UiGrid.cs @@ -94,6 +94,25 @@ //选中的cell索引 private int _selectIndex = -1; + public UiGrid(TUiCellNode template, Node parent, Type cellType) + { + GridContainer = new UiGridContainer(OnReady, OnProcess); + GridContainer.Ready += OnReady; + _template = template; + _cellType = cellType; + parent.AddChild(GridContainer); + var uiInstance = _template.GetUiInstance(); + uiInstance.GetParent()?.RemoveChild(uiInstance); + if (uiInstance is Control control) + { + _size = control.Size; + if (control.CustomMinimumSize == Vector2.Zero) + { + control.CustomMinimumSize = _size; + } + } + } + public UiGrid(TUiCellNode template, Type cellType) { GridContainer = new UiGridContainer(OnReady, OnProcess); diff --git a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs index 4b4c02a..436223c 100644 --- a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs +++ b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs @@ -11,7 +11,7 @@ public const string excelTool_obj_ExcelTool_csproj_nuget_dgspec_json = "res://excelTool/obj/ExcelTool.csproj.nuget.dgspec.json"; public const string excelTool_obj_project_assets_json = "res://excelTool/obj/project.assets.json"; public const string excelTool_obj_Release_net8_0_winx64_ExcelTool_csproj_FileListAbsolute_txt = "res://excelTool/obj/Release/net8.0/win-x64/ExcelTool.csproj.FileListAbsolute.txt"; - public const string excelTool_obj_Release_net8_0_winx64_PublishOutputs_77891b5d25_txt = "res://excelTool/obj/Release/net8.0/win-x64/PublishOutputs.77891b5d25.txt"; + public const string excelTool_obj_Release_net8_0_winx64_PublishOutputs_a0fcfe3642_txt = "res://excelTool/obj/Release/net8.0/win-x64/PublishOutputs.a0fcfe3642.txt"; public const string excelTool_publish_winx64_ExcelTool_deps_json = "res://excelTool/publish/win-x64/ExcelTool.deps.json"; public const string excelTool_publish_winx64_ExcelTool_runtimeconfig_json = "res://excelTool/publish/win-x64/ExcelTool.runtimeconfig.json"; public const string prefab_Cursor_tscn = "res://prefab/Cursor.tscn"; @@ -225,6 +225,8 @@ public const string resource_sprite_map_PreviewTransition4_png = "res://resource/sprite/map/PreviewTransition4.png"; public const string resource_sprite_map_PreviewTransition5_png = "res://resource/sprite/map/PreviewTransition5.png"; public const string resource_sprite_map_TerrainMask_png = "res://resource/sprite/map/TerrainMask.png"; + public const string resource_sprite_map_TerrainMask2_png = "res://resource/sprite/map/TerrainMask2.png"; + public const string resource_sprite_map_TerrainMask3_png = "res://resource/sprite/map/TerrainMask3.png"; public const string resource_sprite_map_WallTransition1_png = "res://resource/sprite/map/WallTransition1.png"; public const string resource_sprite_map_WallTransition2_png = "res://resource/sprite/map/WallTransition2.png"; public const string resource_sprite_map_WallTransition3_png = "res://resource/sprite/map/WallTransition3.png"; diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrain.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrain.cs index fcf2de7..cc586b7 100644 --- a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrain.cs +++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrain.cs @@ -25,13 +25,13 @@ public sealed override void OnInitNestedUi() { - _ = L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_LeftBottomBg; - _ = L_VSplitContainer.L_LeftBottom.L_MarginContainer.L_LeftBg; + _ = L_VSplitContainer.L_PanelTop.L_MarginContainer.L_TopBg; + _ = L_VSplitContainer.L_PanelBottom.L_MarginContainer.L_BottomBg; } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.CellRoot.RightCell.CellTexture + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.CellRoot.RightCell.CellTexture /// public class CellTexture : UiNode { @@ -40,12 +40,12 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.CellRoot.RightCell + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.CellRoot.RightCell /// public class RightCell : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.CellRoot.CellTexture + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.CellRoot.CellTexture /// public CellTexture L_CellTexture { @@ -62,12 +62,12 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.CellRoot + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.CellRoot /// public class CellRoot : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.RightCell + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.RightCell /// public RightCell L_RightCell { @@ -84,7 +84,7 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.TerrainTexture1.Label + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.TerrainTexture1.Label /// public class Label : UiNode { @@ -93,12 +93,12 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.TerrainTexture1 + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.TerrainTexture1 /// public class TerrainTexture1 : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.Label + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.Label /// public Label L_Label { @@ -115,7 +115,7 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.TerrainTexture2.Label + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.TerrainTexture2.Label /// public class Label_1 : UiNode { @@ -124,12 +124,12 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.TerrainTexture2 + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.TerrainTexture2 /// public class TerrainTexture2 : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.Label + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.Label /// public Label_1 L_Label { @@ -146,7 +146,7 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.TerrainTexture3.Label + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.TerrainTexture3.Label /// public class Label_2 : UiNode { @@ -155,12 +155,12 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.TerrainTexture3 + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.TerrainTexture3 /// public class TerrainTexture3 : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.Label + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.Label /// public Label_2 L_Label { @@ -177,7 +177,7 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.Brush + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.Brush /// public class Brush : UiNode { @@ -186,12 +186,12 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot /// public class TerrainRoot : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.CellRoot + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.CellRoot /// public CellRoot L_CellRoot { @@ -204,7 +204,7 @@ private CellRoot _L_CellRoot; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainTexture1 + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainTexture1 /// public TerrainTexture1 L_TerrainTexture1 { @@ -217,7 +217,7 @@ private TerrainTexture1 _L_TerrainTexture1; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainTexture2 + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainTexture2 /// public TerrainTexture2 L_TerrainTexture2 { @@ -230,7 +230,7 @@ private TerrainTexture2 _L_TerrainTexture2; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainTexture3 + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainTexture3 /// public TerrainTexture3 L_TerrainTexture3 { @@ -243,7 +243,7 @@ private TerrainTexture3 _L_TerrainTexture3; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.Brush + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.Brush /// public Brush L_Brush { @@ -260,7 +260,7 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.Grid + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.Grid /// public class Grid : UiNode { @@ -269,7 +269,7 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.FocusBtn + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.FocusBtn /// public class FocusBtn : UiNode { @@ -278,12 +278,12 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg /// - public class LeftBottomBg : UiNode + public class TopBg : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.TerrainRoot + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TerrainRoot /// public TerrainRoot L_TerrainRoot { @@ -296,7 +296,7 @@ private TerrainRoot _L_TerrainRoot; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.Grid + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.Grid /// public Grid L_Grid { @@ -309,7 +309,7 @@ private Grid _L_Grid; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.FocusBtn + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.FocusBtn /// public FocusBtn L_FocusBtn { @@ -321,36 +321,36 @@ } private FocusBtn _L_FocusBtn; - public LeftBottomBg(TileSetEditorTerrainPanel uiPanel, UI.TileSetEditorTerrain.TileEditTerrain node) : base(uiPanel, node) { } - public override LeftBottomBg Clone() => new (UiPanel, (UI.TileSetEditorTerrain.TileEditTerrain)Instance.Duplicate()); + public TopBg(TileSetEditorTerrainPanel uiPanel, UI.TileSetEditorTerrain.TileEditTerrain node) : base(uiPanel, node) { } + public override TopBg Clone() => new (UiPanel, (UI.TileSetEditorTerrain.TileEditTerrain)Instance.Duplicate()); } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer /// public class MarginContainer : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.LeftBottomBg + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.TopBg /// - public LeftBottomBg L_LeftBottomBg + public TopBg L_TopBg { get { - if (_L_LeftBottomBg == null) _L_LeftBottomBg = new LeftBottomBg(UiPanel, Instance.GetNode("LeftBottomBg")); - return _L_LeftBottomBg; + if (_L_TopBg == null) _L_TopBg = new TopBg(UiPanel, Instance.GetNode("TopBg")); + return _L_TopBg; } } - private LeftBottomBg _L_LeftBottomBg; + private TopBg _L_TopBg; public MarginContainer(TileSetEditorTerrainPanel uiPanel, Godot.MarginContainer node) : base(uiPanel, node) { } public override MarginContainer Clone() => new (UiPanel, (Godot.MarginContainer)Instance.Duplicate()); } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2 + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelTop /// - public class LeftBottom2 : UiNode + public class PanelTop : UiNode { /// /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.MarginContainer @@ -365,43 +365,43 @@ } private MarginContainer _L_MarginContainer; - public LeftBottom2(TileSetEditorTerrainPanel uiPanel, Godot.Panel node) : base(uiPanel, node) { } - public override LeftBottom2 Clone() => new (UiPanel, (Godot.Panel)Instance.Duplicate()); + public PanelTop(TileSetEditorTerrainPanel uiPanel, Godot.Panel node) : base(uiPanel, node) { } + public override PanelTop Clone() => new (UiPanel, (Godot.Panel)Instance.Duplicate()); } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture.CellRoot.LeftCell + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelBottom.MarginContainer.BottomBg.TileTexture.CellRoot.BottomCell /// - public class LeftCell : UiNode + public class BottomCell : UiNode { - public LeftCell(TileSetEditorTerrainPanel uiPanel, UI.TileSetEditorTerrain.TerrainCellDragHandler node) : base(uiPanel, node) { } - public override LeftCell Clone() => new (UiPanel, (UI.TileSetEditorTerrain.TerrainCellDragHandler)Instance.Duplicate()); + public BottomCell(TileSetEditorTerrainPanel uiPanel, UI.TileSetEditorTerrain.TerrainCellDragHandler node) : base(uiPanel, node) { } + public override BottomCell Clone() => new (UiPanel, (UI.TileSetEditorTerrain.TerrainCellDragHandler)Instance.Duplicate()); } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture.CellRoot + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelBottom.MarginContainer.BottomBg.TileTexture.CellRoot /// public class CellRoot_1 : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture.LeftCell + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelBottom.MarginContainer.BottomBg.TileTexture.BottomCell /// - public LeftCell L_LeftCell + public BottomCell L_BottomCell { get { - if (_L_LeftCell == null) _L_LeftCell = new LeftCell(UiPanel, Instance.GetNode("LeftCell")); - return _L_LeftCell; + if (_L_BottomCell == null) _L_BottomCell = new BottomCell(UiPanel, Instance.GetNode("BottomCell")); + return _L_BottomCell; } } - private LeftCell _L_LeftCell; + private BottomCell _L_BottomCell; public CellRoot_1(TileSetEditorTerrainPanel uiPanel, Godot.Control node) : base(uiPanel, node) { } public override CellRoot_1 Clone() => new (UiPanel, (Godot.Control)Instance.Duplicate()); } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture.MaskBrush + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelBottom.MarginContainer.BottomBg.TileTexture.MaskBrush /// public class MaskBrush : UiNode { @@ -410,12 +410,12 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelBottom.MarginContainer.BottomBg.TileTexture /// public class TileTexture : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.CellRoot + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelBottom.MarginContainer.BottomBg.CellRoot /// public CellRoot_1 L_CellRoot { @@ -428,7 +428,7 @@ private CellRoot_1 _L_CellRoot; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.MaskBrush + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelBottom.MarginContainer.BottomBg.MaskBrush /// public MaskBrush L_MaskBrush { @@ -445,7 +445,7 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.Grid + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelBottom.MarginContainer.BottomBg.Grid /// public class Grid_1 : UiNode { @@ -454,7 +454,7 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.FocusBtn + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelBottom.MarginContainer.BottomBg.FocusBtn /// public class FocusBtn_1 : UiNode { @@ -463,12 +463,12 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelBottom.MarginContainer.BottomBg /// - public class LeftBg : UiNode + public class BottomBg : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.TileTexture + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelBottom.MarginContainer.TileTexture /// public TileTexture L_TileTexture { @@ -481,7 +481,7 @@ private TileTexture _L_TileTexture; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.Grid + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelBottom.MarginContainer.Grid /// public Grid_1 L_Grid { @@ -494,7 +494,7 @@ private Grid_1 _L_Grid; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.FocusBtn + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelBottom.MarginContainer.FocusBtn /// public FocusBtn_1 L_FocusBtn { @@ -506,36 +506,36 @@ } private FocusBtn_1 _L_FocusBtn; - public LeftBg(TileSetEditorTerrainPanel uiPanel, UI.TileSetEditorTerrain.TileEditArea node) : base(uiPanel, node) { } - public override LeftBg Clone() => new (UiPanel, (UI.TileSetEditorTerrain.TileEditArea)Instance.Duplicate()); + public BottomBg(TileSetEditorTerrainPanel uiPanel, UI.TileSetEditorTerrain.TileEditArea node) : base(uiPanel, node) { } + public override BottomBg Clone() => new (UiPanel, (UI.TileSetEditorTerrain.TileEditArea)Instance.Duplicate()); } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelBottom.MarginContainer /// public class MarginContainer_1 : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.LeftBg + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelBottom.BottomBg /// - public LeftBg L_LeftBg + public BottomBg L_BottomBg { get { - if (_L_LeftBg == null) _L_LeftBg = new LeftBg(UiPanel, Instance.GetNode("LeftBg")); - return _L_LeftBg; + if (_L_BottomBg == null) _L_BottomBg = new BottomBg(UiPanel, Instance.GetNode("BottomBg")); + return _L_BottomBg; } } - private LeftBg _L_LeftBg; + private BottomBg _L_BottomBg; public MarginContainer_1(TileSetEditorTerrainPanel uiPanel, Godot.MarginContainer node) : base(uiPanel, node) { } public override MarginContainer_1 Clone() => new (UiPanel, (Godot.MarginContainer)Instance.Duplicate()); } /// - /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.PanelBottom /// - public class LeftBottom : UiNode + public class PanelBottom : UiNode { /// /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.MarginContainer @@ -550,8 +550,8 @@ } private MarginContainer_1 _L_MarginContainer; - public LeftBottom(TileSetEditorTerrainPanel uiPanel, Godot.Panel node) : base(uiPanel, node) { } - public override LeftBottom Clone() => new (UiPanel, (Godot.Panel)Instance.Duplicate()); + public PanelBottom(TileSetEditorTerrainPanel uiPanel, Godot.Panel node) : base(uiPanel, node) { } + public override PanelBottom Clone() => new (UiPanel, (Godot.Panel)Instance.Duplicate()); } /// @@ -560,30 +560,30 @@ public class VSplitContainer : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.LeftBottom2 + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.PanelTop /// - public LeftBottom2 L_LeftBottom2 + public PanelTop L_PanelTop { get { - if (_L_LeftBottom2 == null) _L_LeftBottom2 = new LeftBottom2(UiPanel, Instance.GetNode("LeftBottom2")); - return _L_LeftBottom2; + if (_L_PanelTop == null) _L_PanelTop = new PanelTop(UiPanel, Instance.GetNode("PanelTop")); + return _L_PanelTop; } } - private LeftBottom2 _L_LeftBottom2; + private PanelTop _L_PanelTop; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.LeftBottom + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.PanelBottom /// - public LeftBottom L_LeftBottom + public PanelBottom L_PanelBottom { get { - if (_L_LeftBottom == null) _L_LeftBottom = new LeftBottom(UiPanel, Instance.GetNode("LeftBottom")); - return _L_LeftBottom; + if (_L_PanelBottom == null) _L_PanelBottom = new PanelBottom(UiPanel, Instance.GetNode("PanelBottom")); + return _L_PanelBottom; } } - private LeftBottom _L_LeftBottom; + private PanelBottom _L_PanelBottom; public VSplitContainer(TileSetEditorTerrainPanel uiPanel, Godot.VSplitContainer node) : base(uiPanel, node) { } public override VSplitContainer Clone() => new (UiPanel, (Godot.VSplitContainer)Instance.Duplicate()); @@ -591,74 +591,74 @@ /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.CellRoot.RightCell.CellTexture + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.CellRoot.RightCell.CellTexture /// - public CellTexture S_CellTexture => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_LeftBottomBg.L_TerrainRoot.L_CellRoot.L_RightCell.L_CellTexture; + public CellTexture S_CellTexture => L_VSplitContainer.L_PanelTop.L_MarginContainer.L_TopBg.L_TerrainRoot.L_CellRoot.L_RightCell.L_CellTexture; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.CellRoot.RightCell + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.CellRoot.RightCell /// - public RightCell S_RightCell => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_LeftBottomBg.L_TerrainRoot.L_CellRoot.L_RightCell; + public RightCell S_RightCell => L_VSplitContainer.L_PanelTop.L_MarginContainer.L_TopBg.L_TerrainRoot.L_CellRoot.L_RightCell; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.TerrainTexture1 + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.TerrainTexture1 /// - public TerrainTexture1 S_TerrainTexture1 => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_LeftBottomBg.L_TerrainRoot.L_TerrainTexture1; + public TerrainTexture1 S_TerrainTexture1 => L_VSplitContainer.L_PanelTop.L_MarginContainer.L_TopBg.L_TerrainRoot.L_TerrainTexture1; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.TerrainTexture2 + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.TerrainTexture2 /// - public TerrainTexture2 S_TerrainTexture2 => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_LeftBottomBg.L_TerrainRoot.L_TerrainTexture2; + public TerrainTexture2 S_TerrainTexture2 => L_VSplitContainer.L_PanelTop.L_MarginContainer.L_TopBg.L_TerrainRoot.L_TerrainTexture2; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.TerrainTexture3 + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.TerrainTexture3 /// - public TerrainTexture3 S_TerrainTexture3 => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_LeftBottomBg.L_TerrainRoot.L_TerrainTexture3; + public TerrainTexture3 S_TerrainTexture3 => L_VSplitContainer.L_PanelTop.L_MarginContainer.L_TopBg.L_TerrainRoot.L_TerrainTexture3; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.Brush + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot.Brush /// - public Brush S_Brush => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_LeftBottomBg.L_TerrainRoot.L_Brush; + public Brush S_Brush => L_VSplitContainer.L_PanelTop.L_MarginContainer.L_TopBg.L_TerrainRoot.L_Brush; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg.TerrainRoot /// - public TerrainRoot S_TerrainRoot => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_LeftBottomBg.L_TerrainRoot; + public TerrainRoot S_TerrainRoot => L_VSplitContainer.L_PanelTop.L_MarginContainer.L_TopBg.L_TerrainRoot; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop.MarginContainer.TopBg /// - public LeftBottomBg S_LeftBottomBg => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_LeftBottomBg; + public TopBg S_TopBg => L_VSplitContainer.L_PanelTop.L_MarginContainer.L_TopBg; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2 + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelTop /// - public LeftBottom2 S_LeftBottom2 => L_VSplitContainer.L_LeftBottom2; + public PanelTop S_PanelTop => L_VSplitContainer.L_PanelTop; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture.CellRoot.LeftCell + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelBottom.MarginContainer.BottomBg.TileTexture.CellRoot.BottomCell /// - public LeftCell S_LeftCell => L_VSplitContainer.L_LeftBottom.L_MarginContainer.L_LeftBg.L_TileTexture.L_CellRoot.L_LeftCell; + public BottomCell S_BottomCell => L_VSplitContainer.L_PanelBottom.L_MarginContainer.L_BottomBg.L_TileTexture.L_CellRoot.L_BottomCell; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture.MaskBrush + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelBottom.MarginContainer.BottomBg.TileTexture.MaskBrush /// - public MaskBrush S_MaskBrush => L_VSplitContainer.L_LeftBottom.L_MarginContainer.L_LeftBg.L_TileTexture.L_MaskBrush; + public MaskBrush S_MaskBrush => L_VSplitContainer.L_PanelBottom.L_MarginContainer.L_BottomBg.L_TileTexture.L_MaskBrush; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelBottom.MarginContainer.BottomBg.TileTexture /// - public TileTexture S_TileTexture => L_VSplitContainer.L_LeftBottom.L_MarginContainer.L_LeftBg.L_TileTexture; + public TileTexture S_TileTexture => L_VSplitContainer.L_PanelBottom.L_MarginContainer.L_BottomBg.L_TileTexture; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelBottom.MarginContainer.BottomBg /// - public LeftBg S_LeftBg => L_VSplitContainer.L_LeftBottom.L_MarginContainer.L_LeftBg; + public BottomBg S_BottomBg => L_VSplitContainer.L_PanelBottom.L_MarginContainer.L_BottomBg; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.PanelBottom /// - public LeftBottom S_LeftBottom => L_VSplitContainer.L_LeftBottom; + public PanelBottom S_PanelBottom => L_VSplitContainer.L_PanelBottom; /// /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrainPanel.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrainPanel.cs index 70c6c43..e291342 100644 --- a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrainPanel.cs +++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrainPanel.cs @@ -15,8 +15,10 @@ /// public bool IsDraggingCell { get; set; } - private UiGrid _leftGrid; - private UiGrid _rightGrid; + private UiGrid _topGrid1; + private UiGrid _topGrid2; + private UiGrid _topGrid3; + private UiGrid _bottomGrid; public override void OnCreateUi() { @@ -27,24 +29,12 @@ //背景颜色改变 AddEventListener(EventEnum.OnSetTileSetBgColor, OnChangeTileSetBgColor); - _leftGrid = CreateUiGrid(S_LeftCell); - _leftGrid.SetCellOffset(Vector2I.Zero); + _bottomGrid = CreateUiGrid(S_BottomCell); + _bottomGrid.SetCellOffset(Vector2I.Zero); - var sRightCell = S_RightCell; - var terrainSize = S_TerrainRoot.Instance.Size.AsVector2I(); - terrainSize = terrainSize / GameConfig.TileCellSize; - Debug.Log("terrainSize: " + terrainSize); - sRightCell.Instance.Position = Vector2.Zero; - _rightGrid = CreateUiGrid(sRightCell); - _rightGrid.SetCellOffset(Vector2I.Zero); - _rightGrid.SetColumns(terrainSize.X); - for (var y = 0; y < terrainSize.Y; y++) - { - for (var x = 0; x < terrainSize.X; x++) - { - _rightGrid.Add(false); - } - } + _topGrid1 = InitTopGrid(S_TerrainRoot.L_TerrainTexture1.Instance); + _topGrid2 = InitTopGrid(S_TerrainRoot.L_TerrainTexture2.Instance); + _topGrid3 = InitTopGrid(S_TerrainRoot.L_TerrainTexture3.Instance); OnSetTileTexture(EditorPanel.Texture); OnChangeTileSetBgColor(EditorPanel.BgColor); @@ -60,24 +50,45 @@ S_MaskBrush.Instance.Visible = !IsDraggingCell; } + private UiGrid InitTopGrid(Control texture) + { + var cellRoot = S_TopBg.L_TerrainRoot.L_CellRoot; + var sRightCell = cellRoot.L_RightCell; + var terrainSize = texture.Size.AsVector2I(); + terrainSize = terrainSize / GameConfig.TileCellSize; + sRightCell.Instance.Position = texture.Position; + var grid = CreateUiGrid(sRightCell, cellRoot.Instance); + grid.SetCellOffset(Vector2I.Zero); + grid.SetColumns(terrainSize.X); + for (var y = 0; y < terrainSize.Y; y++) + { + for (var x = 0; x < terrainSize.X; x++) + { + grid.Add(false); + } + } + + return grid; + } + //改变TileSet纹理 private void OnSetTileTexture(object arg) { - S_LeftBg.Instance.OnChangeTileSetTexture(); + S_BottomBg.Instance.OnChangeTileSetTexture(); - _leftGrid.RemoveAll(); + _bottomGrid.RemoveAll(); var cellHorizontal = EditorPanel.CellHorizontal; if (cellHorizontal <= 0) { return; } var cellVertical = EditorPanel.CellVertical; - _leftGrid.SetColumns(cellHorizontal); + _bottomGrid.SetColumns(cellHorizontal); for (var y = 0; y < cellVertical; y++) { for (var x = 0; x < cellHorizontal; x++) { - _leftGrid.Add(new Rect2I(x * GameConfig.TileCellSize, y * GameConfig.TileCellSize, GameConfig.TileCellSize, GameConfig.TileCellSize)); + _bottomGrid.Add(new Rect2I(x * GameConfig.TileCellSize, y * GameConfig.TileCellSize, GameConfig.TileCellSize, GameConfig.TileCellSize)); } } } @@ -85,7 +96,7 @@ //更改背景颜色 private void OnChangeTileSetBgColor(object obj) { - S_LeftBg.Instance.Color = EditorPanel.BgColor; - S_LeftBottomBg.Instance.Color = EditorPanel.BgColor; + S_BottomBg.Instance.Color = EditorPanel.BgColor; + S_TopBg.Instance.Color = EditorPanel.BgColor; } } diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/MaskCell.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/MaskCell.cs index 1c2a77a..39a52f2 100644 --- a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/MaskCell.cs +++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/MaskCell.cs @@ -2,7 +2,7 @@ namespace UI.TileSetEditorTerrain; -public class MaskCell : UiCell +public class MaskCell : UiCell { public override void OnInit() { diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/TerrainCellDragHandler.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/TerrainCellDragHandler.cs index 43873e6..acb84b2 100644 --- a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/TerrainCellDragHandler.cs +++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/TerrainCellDragHandler.cs @@ -19,7 +19,7 @@ { _maskCell = maskCell; _panel = maskCell.CellNode.UiPanel; - _textureRect = _panel.S_LeftBg.L_TileTexture.Instance; + _textureRect = _panel.S_BottomBg.L_TileTexture.Instance; _texture = _textureRect.Texture; } @@ -51,7 +51,7 @@ var control = new Control(); control.AddChild(sprite); control.ZIndex = 10; - control.Scale = _panel.S_LeftBottomBg.L_TerrainRoot.Instance.Scale; + control.Scale = _panel.S_TopBg.L_TerrainRoot.Instance.Scale; SetDragPreview(control); return _rect2I; } diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/TileEditArea.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/TileEditArea.cs index c66b3f6..0e2c15e 100644 --- a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/TileEditArea.cs +++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/down/TileEditArea.cs @@ -2,7 +2,7 @@ namespace UI.TileSetEditorTerrain; -public partial class TileEditArea : EditorGridBg +public partial class TileEditArea : EditorGridBg { public override void SetUiNode(IUiNode uiNode) { diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TerrainBrush.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TerrainBrush.cs index 586560d..10881dc 100644 --- a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TerrainBrush.cs +++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TerrainBrush.cs @@ -1,10 +1,12 @@ -using Godot; +using System.Collections.Generic; +using Godot; namespace UI.TileSetEditorTerrain; public partial class TerrainBrush : Control { - public Control TerrainRoot { get; set; } + public Control Root { get; set; } + public List TerrainTextureList { get; } = new List(); public override void _Process(double delta) @@ -14,20 +16,29 @@ public override void _Draw() { + var scale = Root.Scale; //绘制区域 - DrawRect( - new Rect2(Vector2.Zero, TerrainRoot.Size.AsVector2I()), new Color(1, 1, 0, 0.5f), false, - 2f / TerrainRoot.Scale.X - ); + foreach (var control in TerrainTextureList) + { + DrawRect( + new Rect2(control.Position, control.Size.AsVector2I()), new Color(1, 1, 0, 0.5f), false, + 2f / scale.X + ); + } + //绘制鼠标悬停区域 - if (TerrainRoot.IsMouseInRect()) + foreach (var control in TerrainTextureList) { - var pos = Utils.GetMouseCellPosition(TerrainRoot) * GameConfig.TileCellSize; - DrawRect( - new Rect2(pos,GameConfig.TileCellSizeVector2I), - Colors.Green, false, 3f / TerrainRoot.Scale.X - ); + if (control.IsMouseInRect()) + { + var pos = Utils.GetMouseCellPosition(control) * GameConfig.TileCellSize; + DrawRect( + new Rect2(pos + control.Position,GameConfig.TileCellSizeVector2I), + Colors.Green, false, 3f / scale.X + ); + break; + } } } } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TerrainTabData.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TerrainTabData.cs index 9424b6f..cc13656 100644 --- a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TerrainTabData.cs +++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TerrainTabData.cs @@ -5,11 +5,11 @@ public class TerrainTabData { public string Text; - public TileSetEditorTerrain.LeftBottomBg LeftBottomBg; + public TileSetEditorTerrain.TopBg TopBg; - public TerrainTabData(string text, TileSetEditorTerrain.LeftBottomBg leftBottomBg) + public TerrainTabData(string text, TileSetEditorTerrain.TopBg topBg) { Text = text; - LeftBottomBg = leftBottomBg; + TopBg = topBg; } } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TileEditTerrain.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TileEditTerrain.cs index 7a40a66..8a0f43e 100644 --- a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TileEditTerrain.cs +++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TileEditTerrain.cs @@ -2,14 +2,18 @@ namespace UI.TileSetEditorTerrain; -public partial class TileEditTerrain : EditorGridBg +public partial class TileEditTerrain : EditorGridBg { public override void SetUiNode(IUiNode uiNode) { base.SetUiNode(uiNode); var tileTexture = UiNode.L_TerrainRoot; InitNode(tileTexture.Instance, UiNode.L_Grid.Instance); - tileTexture.L_Brush.Instance.TerrainRoot = tileTexture.Instance; + var terrainBrush = tileTexture.L_Brush.Instance; + terrainBrush.Root = tileTexture.Instance; + terrainBrush.TerrainTextureList.Add(tileTexture.L_TerrainTexture1.Instance); + terrainBrush.TerrainTextureList.Add(tileTexture.L_TerrainTexture2.Instance); + terrainBrush.TerrainTextureList.Add(tileTexture.L_TerrainTexture3.Instance); //聚焦按钮点击 UiNode.L_FocusBtn.Instance.Pressed += OnFocusClick;