diff --git a/DungeonShooting_Godot/prefab/ui/EditorWindow.tscn b/DungeonShooting_Godot/prefab/ui/EditorWindow.tscn index 6a7aa6a..1a8f5bb 100644 --- a/DungeonShooting_Godot/prefab/ui/EditorWindow.tscn +++ b/DungeonShooting_Godot/prefab/ui/EditorWindow.tscn @@ -27,7 +27,7 @@ initial_position = 1 size = Vector2i(500, 350) visible = false -exclusive = true +transient = true min_size = Vector2i(500, 350) theme_override_constants/title_height = 33 diff --git a/DungeonShooting_Godot/prefab/ui/MapEditorCreateMark.tscn b/DungeonShooting_Godot/prefab/ui/MapEditorCreateMark.tscn index 2680a5b..88a77b3 100644 --- a/DungeonShooting_Godot/prefab/ui/MapEditorCreateMark.tscn +++ b/DungeonShooting_Godot/prefab/ui/MapEditorCreateMark.tscn @@ -1,6 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://bt4xo2lb4h4rx"] +[gd_scene load_steps=5 format=3 uid="uid://bt4xo2lb4h4rx"] [ext_resource type="Script" path="res://src/game/ui/mapEditorCreateMark/MapEditorCreateMarkPanel.cs" id="1_cjivg"] +[ext_resource type="Material" uid="uid://cces3bhds7jyi" path="res://resource/material/Blend.tres" id="2_xb40b"] +[ext_resource type="Texture2D" uid="uid://c5778ntk2rdon" path="res://resource/sprite/ui/commonIcon/Delete.png" id="3_7xihk"] +[ext_resource type="Texture2D" uid="uid://dligpyhp72sg7" path="res://resource/sprite/ui/commonIcon/Right.png" id="3_v5clf"] [node name="MapEditorCreateMark" type="Control"] layout_mode = 3 @@ -25,37 +28,42 @@ layout_mode = 2 theme_override_constants/separation = 20 -[node name="HBoxContainer2" type="HBoxContainer" parent="MarginContainer/VBoxContainer"] +[node name="HBoxContainer3" type="HBoxContainer" parent="MarginContainer/VBoxContainer"] layout_mode = 2 -[node name="WaveNameLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer2"] +[node name="HBoxContainer2" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3"] layout_mode = 2 size_flags_horizontal = 3 -size_flags_stretch_ratio = 20.0 + +[node name="WaveNameLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer3/HBoxContainer2"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 30.0 text = "所属波数:" horizontal_alignment = 2 vertical_alignment = 1 -[node name="WaveOption" type="OptionButton" parent="MarginContainer/VBoxContainer/HBoxContainer2"] +[node name="WaveOption" type="OptionButton" parent="MarginContainer/VBoxContainer/HBoxContainer3/HBoxContainer2"] layout_mode = 2 size_flags_horizontal = 3 -size_flags_stretch_ratio = 80.0 +size_flags_stretch_ratio = 70.0 -[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer"] -layout_mode = 2 - -[node name="DelayNameLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer"] +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3"] layout_mode = 2 size_flags_horizontal = 3 -size_flags_stretch_ratio = 20.0 + +[node name="DelayNameLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer3/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 30.0 text = "延时时间:" horizontal_alignment = 2 vertical_alignment = 1 -[node name="DelayInput" type="SpinBox" parent="MarginContainer/VBoxContainer/HBoxContainer"] +[node name="DelayInput" type="SpinBox" parent="MarginContainer/VBoxContainer/HBoxContainer3/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 -size_flags_stretch_ratio = 80.0 +size_flags_stretch_ratio = 70.0 max_value = 30.0 step = 0.01 custom_arrow_step = 0.1 @@ -69,15 +77,114 @@ layout_mode = 2 size_flags_vertical = 3 -[node name="MarkObject" type="HBoxContainer" parent="MarginContainer/VBoxContainer/Panel"] +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/Panel"] layout_mode = 1 -anchors_preset = 10 +anchors_preset = 15 anchor_right = 1.0 -offset_bottom = 43.0 +anchor_bottom = 1.0 grow_horizontal = 2 +grow_vertical = 2 -[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/Panel/MarkObject"] +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer"] +custom_minimum_size = Vector2(0, 60) +layout_mode = 2 + +[node name="Control" type="Control" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 + +[node name="IconTitle" type="Label" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +text = "图标" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="IdTitle" type="Label" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(250, 0) +layout_mode = 2 +text = "物体Id" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="NameTitle" type="Label" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(350, 0) +layout_mode = 2 +text = "物体名称" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="WeightTitle" type="Label" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(250, 0) +layout_mode = 2 +text = "权重" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="ExtraTitle" type="Label" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/HBoxContainer"] +visible = false +custom_minimum_size = Vector2(250, 0) layout_mode = 2 size_flags_horizontal = 3 -text = "123456" -horizontal_alignment = 2 +text = "额外属性" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="MarkObject" type="HBoxContainer" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer"] +custom_minimum_size = Vector2(0, 100) +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="ExpandButton" type="Button" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject"] +custom_minimum_size = Vector2(80, 80) +layout_mode = 2 +size_flags_vertical = 4 +icon = ExtResource("3_v5clf") +flat = true +icon_alignment = 1 + +[node name="Icon" type="TextureRect" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject"] +material = ExtResource("2_xb40b") +custom_minimum_size = Vector2(80, 80) +layout_mode = 2 +stretch_mode = 5 + +[node name="IdLabel" type="Label" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject"] +custom_minimum_size = Vector2(250, 0) +layout_mode = 2 +size_flags_vertical = 1 +text = "1001" +horizontal_alignment = 1 +vertical_alignment = 1 +autowrap_mode = 3 + +[node name="NameLabel" type="Label" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject"] +custom_minimum_size = Vector2(350, 0) +layout_mode = 2 +size_flags_vertical = 1 +text = "名称" +horizontal_alignment = 1 +vertical_alignment = 1 +autowrap_mode = 3 + +[node name="LineEdit" type="SpinBox" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject"] +custom_minimum_size = Vector2(250, 43) +layout_mode = 2 +size_flags_vertical = 4 +max_value = 1000.0 +value = 100.0 +custom_arrow_step = 1.0 + +[node name="CenterContainer" type="CenterContainer" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="DeleteButton" type="Button" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject/CenterContainer"] +custom_minimum_size = Vector2(43, 43) +layout_mode = 2 +size_flags_vertical = 4 +icon = ExtResource("3_7xihk") diff --git a/DungeonShooting_Godot/resource/sprite/ui/commonIcon/Left.png b/DungeonShooting_Godot/resource/sprite/ui/commonIcon/Left.png deleted file mode 100644 index da0ce73..0000000 --- a/DungeonShooting_Godot/resource/sprite/ui/commonIcon/Left.png +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/ui/commonIcon/Left.png.import b/DungeonShooting_Godot/resource/sprite/ui/commonIcon/Left.png.import deleted file mode 100644 index 4bfb312..0000000 --- a/DungeonShooting_Godot/resource/sprite/ui/commonIcon/Left.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dligpyhp72sg7" -path="res://.godot/imported/Left.png-378d8dc69fe2734c1201d2a52875a630.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/ui/commonIcon/Left.png" -dest_files=["res://.godot/imported/Left.png-378d8dc69fe2734c1201d2a52875a630.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/resource/sprite/ui/commonIcon/Right.png b/DungeonShooting_Godot/resource/sprite/ui/commonIcon/Right.png new file mode 100644 index 0000000..da0ce73 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/ui/commonIcon/Right.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/ui/commonIcon/Right.png.import b/DungeonShooting_Godot/resource/sprite/ui/commonIcon/Right.png.import new file mode 100644 index 0000000..5fb9488 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/ui/commonIcon/Right.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dligpyhp72sg7" +path="res://.godot/imported/Right.png-22242f6b1f2c41dacc2876dc0a629574.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/ui/commonIcon/Right.png" +dest_files=["res://.godot/imported/Right.png-22242f6b1f2c41dacc2876dc0a629574.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/grid/UiGrid.cs b/DungeonShooting_Godot/src/framework/ui/grid/UiGrid.cs index 0f1cdd3..ed18bc2 100644 --- a/DungeonShooting_Godot/src/framework/ui/grid/UiGrid.cs +++ b/DungeonShooting_Godot/src/framework/ui/grid/UiGrid.cs @@ -50,6 +50,11 @@ } } } + + /// + /// 选中的 Cell 包含的数据 + /// + public TData SelectData => _selectIndex >= 0 ? _cellList[_selectIndex].Data : default; public bool Visible { @@ -64,9 +69,9 @@ //cell逻辑处理类 private Type _cellType; //当前活动的cell池 - private Stack> _cellPool = new Stack>(); - //当前已被回收的cell池 private List> _cellList = new List>(); + //当前已被回收的cell池 + private Stack> _cellPool = new Stack>(); //godot原生网格组件 private UiGridContainer _gridContainer; //单个cell偏移 diff --git a/DungeonShooting_Godot/src/game/manager/EditorWindowManager.cs b/DungeonShooting_Godot/src/game/manager/EditorWindowManager.cs index 0378d43..5538db5 100644 --- a/DungeonShooting_Godot/src/game/manager/EditorWindowManager.cs +++ b/DungeonShooting_Godot/src/game/manager/EditorWindowManager.cs @@ -1,6 +1,7 @@  using System; using System.Collections.Generic; +using Config; using Godot; using UI.EditorTips; using UI.EditorWindow; @@ -8,6 +9,7 @@ using UI.MapEditorCreateMark; using UI.MapEditorCreatePreinstall; using UI.MapEditorCreateRoom; +using UI.MapEditorSelectObject; public static class EditorWindowManager { @@ -17,9 +19,10 @@ /// 标题 /// 显示内容 /// 关闭时的回调 - public static void ShowTips(string title, string message, Action onClose = null) + /// 所属父级Ui + public static void ShowTips(string title, string message, Action onClose = null, UiBase parentUi = null) { - var window = UiManager.Open_EditorWindow(); + var window = CreateWindowInstance(parentUi); window.SetWindowTitle(title); if (onClose != null) { @@ -41,9 +44,10 @@ /// 标题 /// 显示内容 /// 关闭时的回调, 参数如果为 true 表示点击了确定 - public static void ShowConfirm(string title, string message, Action onClose) + /// 所属父级Ui + public static void ShowConfirm(string title, string message, Action onClose, UiBase parentUi = null) { - var window = UiManager.Open_EditorWindow(); + var window = CreateWindowInstance(parentUi); window.SetWindowTitle(title); window.CloseEvent += () => { @@ -69,9 +73,10 @@ /// 打开创建地牢组弹窗 /// /// 创建成功时回调 - public static void ShowCreateGroup(Action onCreateGroup) + /// 所属父级Ui + public static void ShowCreateGroup(Action onCreateGroup, UiBase parentUi = null) { - var window = UiManager.Open_EditorWindow(); + var window = CreateWindowInstance(parentUi); window.SetWindowTitle("创建地牢组"); window.SetWindowSize(new Vector2I(700, 500)); var body = window.OpenBody(UiManager.UiName.MapEditorCreateGroup); @@ -157,12 +162,18 @@ ); } - public static void ShowCreateMark() + /// + /// 打开创建标记页面 + /// + /// 房间预设信息 + /// 当前波数据 + public static void ShowCreateMark(RoomPreinstall preinstall, int waveIndex) { var window = UiManager.Open_EditorWindow(); window.SetWindowTitle("创建标记"); - window.SetWindowSize(new Vector2I(1200, 900)); + window.SetWindowSize(new Vector2I(1400, 900)); var body = window.OpenBody(UiManager.UiName.MapEditorCreateMark); + body.InitData(preinstall, waveIndex); window.SetButtonList( new EditorWindowPanel.ButtonData("确定", () => { @@ -180,30 +191,51 @@ ); } - public static void ShowSelectObject(string title, UiBase parentUi = null) + /// + /// 打开选中的物体 + /// + /// 选中物体时回调 + /// 所属父级Ui + public static void ShowSelectObject(Action onSelectObject, UiBase parentUi = null) { - EditorWindowPanel window; - if (parentUi != null) - { - window = parentUi.OpenNestedUi(UiManager.UiName.EditorWindow); - } - else - { - window = UiManager.Open_EditorWindow(); - } - + var window = CreateWindowInstance(parentUi); window.S_Window.Instance.Size = new Vector2I(1000, 700); - window.SetWindowTitle(title); - window.OpenBody(UiManager.UiName.MapEditorSelectObject); + window.SetWindowTitle("选择物体"); + var body = window.OpenBody(UiManager.UiName.MapEditorSelectObject); window.SetButtonList( new EditorWindowPanel.ButtonData("确定", () => { - window.CloseWindow(); + var selectObject = body.GetSelectData(); + if (selectObject == null) + { + ShowTips("提示", "您未选择任何物体"); + } + else + { + window.CloseWindow(); + onSelectObject(selectObject); + } }), new EditorWindowPanel.ButtonData("取消", () => { window.CloseWindow(); }) ); + //绑定双击选中物体事件 + body.SelectObjectEvent += selectObject => + { + window.CloseWindow(); + onSelectObject(selectObject); + }; + } + + private static EditorWindowPanel CreateWindowInstance(UiBase parentUi) + { + if (parentUi != null) + { + return parentUi.OpenNestedUi(UiManager.UiName.EditorWindow); + } + + return UiManager.Open_EditorWindow(); } } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs index 460803b..8b1794c 100644 --- a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs +++ b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs @@ -184,9 +184,9 @@ public const string resource_sprite_ui_commonIcon_DragTool_png = "res://resource/sprite/ui/commonIcon/DragTool.png"; public const string resource_sprite_ui_commonIcon_Edit_png = "res://resource/sprite/ui/commonIcon/Edit.png"; public const string resource_sprite_ui_commonIcon_Hide_png = "res://resource/sprite/ui/commonIcon/Hide.png"; - public const string resource_sprite_ui_commonIcon_Left_png = "res://resource/sprite/ui/commonIcon/Left.png"; public const string resource_sprite_ui_commonIcon_Lock_png = "res://resource/sprite/ui/commonIcon/Lock.png"; public const string resource_sprite_ui_commonIcon_PenTool_png = "res://resource/sprite/ui/commonIcon/PenTool.png"; + public const string resource_sprite_ui_commonIcon_Right_png = "res://resource/sprite/ui/commonIcon/Right.png"; public const string resource_sprite_ui_commonIcon_Search_png = "res://resource/sprite/ui/commonIcon/Search.png"; public const string resource_sprite_ui_commonIcon_Select_png = "res://resource/sprite/ui/commonIcon/Select.png"; public const string resource_sprite_ui_commonIcon_Select2_png = "res://resource/sprite/ui/commonIcon/Select2.png"; diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMark.cs b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMark.cs index ddfacca..43b6dc5 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMark.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMark.cs @@ -28,7 +28,7 @@ } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer2.WaveNameLabel + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.HBoxContainer2.WaveNameLabel /// public class WaveNameLabel : UiNode { @@ -37,7 +37,7 @@ } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer2.WaveOption + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.HBoxContainer2.WaveOption /// public class WaveOption : UiNode { @@ -46,12 +46,12 @@ } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer2 + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.HBoxContainer2 /// public class HBoxContainer2 : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.WaveNameLabel + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.WaveNameLabel /// public WaveNameLabel L_WaveNameLabel { @@ -64,7 +64,7 @@ private WaveNameLabel _L_WaveNameLabel; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.WaveOption + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.WaveOption /// public WaveOption L_WaveOption { @@ -81,7 +81,7 @@ } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer.DelayNameLabel + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.HBoxContainer.DelayNameLabel /// public class DelayNameLabel : UiNode { @@ -90,7 +90,7 @@ } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer.DelayInput + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.HBoxContainer.DelayInput /// public class DelayInput : UiNode { @@ -99,12 +99,12 @@ } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.HBoxContainer /// public class HBoxContainer : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.DelayNameLabel + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.DelayNameLabel /// public DelayNameLabel L_DelayNameLabel { @@ -117,7 +117,7 @@ private DelayNameLabel _L_DelayNameLabel; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.DelayInput + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.DelayInput /// public DelayInput L_DelayInput { @@ -134,74 +134,12 @@ } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.AddMark + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3 /// - public class AddMark : UiNode - { - public AddMark(MapEditorCreateMarkPanel uiPanel, Godot.Button node) : base(uiPanel, node) { } - public override AddMark Clone() => new (UiPanel, (Godot.Button)Instance.Duplicate()); - } - - /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.MarkObject.Label - /// - public class Label : UiNode - { - public Label(MapEditorCreateMarkPanel uiPanel, Godot.Label node) : base(uiPanel, node) { } - public override Label Clone() => new (UiPanel, (Godot.Label)Instance.Duplicate()); - } - - /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.MarkObject - /// - public class MarkObject : UiNode + public class HBoxContainer3 : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.Label - /// - public Label L_Label - { - get - { - if (_L_Label == null) _L_Label = new Label(UiPanel, Instance.GetNodeOrNull("Label")); - return _L_Label; - } - } - private Label _L_Label; - - public MarkObject(MapEditorCreateMarkPanel uiPanel, Godot.HBoxContainer node) : base(uiPanel, node) { } - public override MarkObject Clone() => new (UiPanel, (Godot.HBoxContainer)Instance.Duplicate()); - } - - /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel - /// - public class Panel : UiNode - { - /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.MarkObject - /// - public MarkObject L_MarkObject - { - get - { - if (_L_MarkObject == null) _L_MarkObject = new MarkObject(UiPanel, Instance.GetNodeOrNull("MarkObject")); - return _L_MarkObject; - } - } - private MarkObject _L_MarkObject; - - public Panel(MapEditorCreateMarkPanel uiPanel, Godot.Panel node) : base(uiPanel, node) { } - public override Panel Clone() => new (UiPanel, (Godot.Panel)Instance.Duplicate()); - } - - /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer - /// - public class VBoxContainer : UiNode - { - /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.HBoxContainer2 + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer2 /// public HBoxContainer2 L_HBoxContainer2 { @@ -214,7 +152,7 @@ private HBoxContainer2 _L_HBoxContainer2; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.HBoxContainer + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer /// public HBoxContainer L_HBoxContainer { @@ -226,6 +164,420 @@ } private HBoxContainer _L_HBoxContainer; + public HBoxContainer3(MapEditorCreateMarkPanel uiPanel, Godot.HBoxContainer node) : base(uiPanel, node) { } + public override HBoxContainer3 Clone() => new (UiPanel, (Godot.HBoxContainer)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.AddMark + /// + public class AddMark : UiNode + { + public AddMark(MapEditorCreateMarkPanel uiPanel, Godot.Button node) : base(uiPanel, node) { } + public override AddMark Clone() => new (UiPanel, (Godot.Button)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.HBoxContainer.Control + /// + public class Control : UiNode + { + public Control(MapEditorCreateMarkPanel uiPanel, Godot.Control node) : base(uiPanel, node) { } + public override Control Clone() => new (UiPanel, (Godot.Control)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.HBoxContainer.IconTitle + /// + public class IconTitle : UiNode + { + public IconTitle(MapEditorCreateMarkPanel uiPanel, Godot.Label node) : base(uiPanel, node) { } + public override IconTitle Clone() => new (UiPanel, (Godot.Label)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.HBoxContainer.IdTitle + /// + public class IdTitle : UiNode + { + public IdTitle(MapEditorCreateMarkPanel uiPanel, Godot.Label node) : base(uiPanel, node) { } + public override IdTitle Clone() => new (UiPanel, (Godot.Label)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.HBoxContainer.NameTitle + /// + public class NameTitle : UiNode + { + public NameTitle(MapEditorCreateMarkPanel uiPanel, Godot.Label node) : base(uiPanel, node) { } + public override NameTitle Clone() => new (UiPanel, (Godot.Label)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.HBoxContainer.WeightTitle + /// + public class WeightTitle : UiNode + { + public WeightTitle(MapEditorCreateMarkPanel uiPanel, Godot.Label node) : base(uiPanel, node) { } + public override WeightTitle Clone() => new (UiPanel, (Godot.Label)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.HBoxContainer.ExtraTitle + /// + public class ExtraTitle : UiNode + { + public ExtraTitle(MapEditorCreateMarkPanel uiPanel, Godot.Label node) : base(uiPanel, node) { } + public override ExtraTitle Clone() => new (UiPanel, (Godot.Label)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.HBoxContainer + /// + public class HBoxContainer_1 : UiNode + { + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.Control + /// + public Control L_Control + { + get + { + if (_L_Control == null) _L_Control = new Control(UiPanel, Instance.GetNodeOrNull("Control")); + return _L_Control; + } + } + private Control _L_Control; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.IconTitle + /// + public IconTitle L_IconTitle + { + get + { + if (_L_IconTitle == null) _L_IconTitle = new IconTitle(UiPanel, Instance.GetNodeOrNull("IconTitle")); + return _L_IconTitle; + } + } + private IconTitle _L_IconTitle; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.IdTitle + /// + public IdTitle L_IdTitle + { + get + { + if (_L_IdTitle == null) _L_IdTitle = new IdTitle(UiPanel, Instance.GetNodeOrNull("IdTitle")); + return _L_IdTitle; + } + } + private IdTitle _L_IdTitle; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.NameTitle + /// + public NameTitle L_NameTitle + { + get + { + if (_L_NameTitle == null) _L_NameTitle = new NameTitle(UiPanel, Instance.GetNodeOrNull("NameTitle")); + return _L_NameTitle; + } + } + private NameTitle _L_NameTitle; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.WeightTitle + /// + public WeightTitle L_WeightTitle + { + get + { + if (_L_WeightTitle == null) _L_WeightTitle = new WeightTitle(UiPanel, Instance.GetNodeOrNull("WeightTitle")); + return _L_WeightTitle; + } + } + private WeightTitle _L_WeightTitle; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ExtraTitle + /// + public ExtraTitle L_ExtraTitle + { + get + { + if (_L_ExtraTitle == null) _L_ExtraTitle = new ExtraTitle(UiPanel, Instance.GetNodeOrNull("ExtraTitle")); + return _L_ExtraTitle; + } + } + private ExtraTitle _L_ExtraTitle; + + public HBoxContainer_1(MapEditorCreateMarkPanel uiPanel, Godot.HBoxContainer node) : base(uiPanel, node) { } + public override HBoxContainer_1 Clone() => new (UiPanel, (Godot.HBoxContainer)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.ExpandButton + /// + public class ExpandButton : UiNode + { + public ExpandButton(MapEditorCreateMarkPanel uiPanel, Godot.Button node) : base(uiPanel, node) { } + public override ExpandButton Clone() => new (UiPanel, (Godot.Button)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.Icon + /// + public class Icon : UiNode + { + public Icon(MapEditorCreateMarkPanel uiPanel, Godot.TextureRect node) : base(uiPanel, node) { } + public override Icon Clone() => new (UiPanel, (Godot.TextureRect)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.IdLabel + /// + public class IdLabel : UiNode + { + public IdLabel(MapEditorCreateMarkPanel uiPanel, Godot.Label node) : base(uiPanel, node) { } + public override IdLabel Clone() => new (UiPanel, (Godot.Label)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.NameLabel + /// + public class NameLabel : UiNode + { + public NameLabel(MapEditorCreateMarkPanel uiPanel, Godot.Label node) : base(uiPanel, node) { } + public override NameLabel Clone() => new (UiPanel, (Godot.Label)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.LineEdit + /// + public class LineEdit : UiNode + { + public LineEdit(MapEditorCreateMarkPanel uiPanel, Godot.SpinBox node) : base(uiPanel, node) { } + public override LineEdit Clone() => new (UiPanel, (Godot.SpinBox)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.CenterContainer.DeleteButton + /// + public class DeleteButton : UiNode + { + public DeleteButton(MapEditorCreateMarkPanel uiPanel, Godot.Button node) : base(uiPanel, node) { } + public override DeleteButton Clone() => new (UiPanel, (Godot.Button)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.CenterContainer + /// + public class CenterContainer : UiNode + { + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.DeleteButton + /// + public DeleteButton L_DeleteButton + { + get + { + if (_L_DeleteButton == null) _L_DeleteButton = new DeleteButton(UiPanel, Instance.GetNodeOrNull("DeleteButton")); + return _L_DeleteButton; + } + } + private DeleteButton _L_DeleteButton; + + public CenterContainer(MapEditorCreateMarkPanel uiPanel, Godot.CenterContainer node) : base(uiPanel, node) { } + public override CenterContainer Clone() => new (UiPanel, (Godot.CenterContainer)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject + /// + public class MarkObject : UiNode + { + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.ExpandButton + /// + public ExpandButton L_ExpandButton + { + get + { + if (_L_ExpandButton == null) _L_ExpandButton = new ExpandButton(UiPanel, Instance.GetNodeOrNull("ExpandButton")); + return _L_ExpandButton; + } + } + private ExpandButton _L_ExpandButton; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.Icon + /// + public Icon L_Icon + { + get + { + if (_L_Icon == null) _L_Icon = new Icon(UiPanel, Instance.GetNodeOrNull("Icon")); + return _L_Icon; + } + } + private Icon _L_Icon; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.IdLabel + /// + public IdLabel L_IdLabel + { + get + { + if (_L_IdLabel == null) _L_IdLabel = new IdLabel(UiPanel, Instance.GetNodeOrNull("IdLabel")); + return _L_IdLabel; + } + } + private IdLabel _L_IdLabel; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.NameLabel + /// + public NameLabel L_NameLabel + { + get + { + if (_L_NameLabel == null) _L_NameLabel = new NameLabel(UiPanel, Instance.GetNodeOrNull("NameLabel")); + return _L_NameLabel; + } + } + private NameLabel _L_NameLabel; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.LineEdit + /// + public LineEdit L_LineEdit + { + get + { + if (_L_LineEdit == null) _L_LineEdit = new LineEdit(UiPanel, Instance.GetNodeOrNull("LineEdit")); + return _L_LineEdit; + } + } + private LineEdit _L_LineEdit; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.CenterContainer + /// + public CenterContainer L_CenterContainer + { + get + { + if (_L_CenterContainer == null) _L_CenterContainer = new CenterContainer(UiPanel, Instance.GetNodeOrNull("CenterContainer")); + return _L_CenterContainer; + } + } + private CenterContainer _L_CenterContainer; + + public MarkObject(MapEditorCreateMarkPanel uiPanel, Godot.HBoxContainer node) : base(uiPanel, node) { } + public override MarkObject Clone() => new (UiPanel, (Godot.HBoxContainer)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer + /// + public class ScrollContainer : UiNode + { + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.MarkObject + /// + public MarkObject L_MarkObject + { + get + { + if (_L_MarkObject == null) _L_MarkObject = new MarkObject(UiPanel, Instance.GetNodeOrNull("MarkObject")); + return _L_MarkObject; + } + } + private MarkObject _L_MarkObject; + + public ScrollContainer(MapEditorCreateMarkPanel uiPanel, Godot.ScrollContainer node) : base(uiPanel, node) { } + public override ScrollContainer Clone() => new (UiPanel, (Godot.ScrollContainer)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer + /// + public class VBoxContainer_1 : UiNode + { + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.HBoxContainer + /// + public HBoxContainer_1 L_HBoxContainer + { + get + { + if (_L_HBoxContainer == null) _L_HBoxContainer = new HBoxContainer_1(UiPanel, Instance.GetNodeOrNull("HBoxContainer")); + return _L_HBoxContainer; + } + } + private HBoxContainer_1 _L_HBoxContainer; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.ScrollContainer + /// + public ScrollContainer L_ScrollContainer + { + get + { + if (_L_ScrollContainer == null) _L_ScrollContainer = new ScrollContainer(UiPanel, Instance.GetNodeOrNull("ScrollContainer")); + return _L_ScrollContainer; + } + } + private ScrollContainer _L_ScrollContainer; + + public VBoxContainer_1(MapEditorCreateMarkPanel uiPanel, Godot.VBoxContainer node) : base(uiPanel, node) { } + public override VBoxContainer_1 Clone() => new (UiPanel, (Godot.VBoxContainer)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel + /// + public class Panel : UiNode + { + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.VBoxContainer + /// + public VBoxContainer_1 L_VBoxContainer + { + get + { + if (_L_VBoxContainer == null) _L_VBoxContainer = new VBoxContainer_1(UiPanel, Instance.GetNodeOrNull("VBoxContainer")); + return _L_VBoxContainer; + } + } + private VBoxContainer_1 _L_VBoxContainer; + + public Panel(MapEditorCreateMarkPanel uiPanel, Godot.Panel node) : base(uiPanel, node) { } + public override Panel Clone() => new (UiPanel, (Godot.Panel)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer + /// + public class VBoxContainer : UiNode + { + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.HBoxContainer3 + /// + public HBoxContainer3 L_HBoxContainer3 + { + get + { + if (_L_HBoxContainer3 == null) _L_HBoxContainer3 = new HBoxContainer3(UiPanel, Instance.GetNodeOrNull("HBoxContainer3")); + return _L_HBoxContainer3; + } + } + private HBoxContainer3 _L_HBoxContainer3; + /// /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.AddMark /// @@ -280,34 +632,34 @@ /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer2.WaveNameLabel + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.HBoxContainer2.WaveNameLabel /// - public WaveNameLabel S_WaveNameLabel => L_MarginContainer.L_VBoxContainer.L_HBoxContainer2.L_WaveNameLabel; + public WaveNameLabel S_WaveNameLabel => L_MarginContainer.L_VBoxContainer.L_HBoxContainer3.L_HBoxContainer2.L_WaveNameLabel; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer2.WaveOption + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.HBoxContainer2.WaveOption /// - public WaveOption S_WaveOption => L_MarginContainer.L_VBoxContainer.L_HBoxContainer2.L_WaveOption; + public WaveOption S_WaveOption => L_MarginContainer.L_VBoxContainer.L_HBoxContainer3.L_HBoxContainer2.L_WaveOption; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer2 + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.HBoxContainer2 /// - public HBoxContainer2 S_HBoxContainer2 => L_MarginContainer.L_VBoxContainer.L_HBoxContainer2; + public HBoxContainer2 S_HBoxContainer2 => L_MarginContainer.L_VBoxContainer.L_HBoxContainer3.L_HBoxContainer2; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer.DelayNameLabel + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.HBoxContainer.DelayNameLabel /// - public DelayNameLabel S_DelayNameLabel => L_MarginContainer.L_VBoxContainer.L_HBoxContainer.L_DelayNameLabel; + public DelayNameLabel S_DelayNameLabel => L_MarginContainer.L_VBoxContainer.L_HBoxContainer3.L_HBoxContainer.L_DelayNameLabel; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer.DelayInput + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.HBoxContainer.DelayInput /// - public DelayInput S_DelayInput => L_MarginContainer.L_VBoxContainer.L_HBoxContainer.L_DelayInput; + public DelayInput S_DelayInput => L_MarginContainer.L_VBoxContainer.L_HBoxContainer3.L_HBoxContainer.L_DelayInput; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3 /// - public HBoxContainer S_HBoxContainer => L_MarginContainer.L_VBoxContainer.L_HBoxContainer; + public HBoxContainer3 S_HBoxContainer3 => L_MarginContainer.L_VBoxContainer.L_HBoxContainer3; /// /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.AddMark @@ -315,14 +667,79 @@ public AddMark S_AddMark => L_MarginContainer.L_VBoxContainer.L_AddMark; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.MarkObject.Label + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.HBoxContainer.Control /// - public Label S_Label => L_MarginContainer.L_VBoxContainer.L_Panel.L_MarkObject.L_Label; + public Control S_Control => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_HBoxContainer.L_Control; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.MarkObject + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.HBoxContainer.IconTitle /// - public MarkObject S_MarkObject => L_MarginContainer.L_VBoxContainer.L_Panel.L_MarkObject; + public IconTitle S_IconTitle => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_HBoxContainer.L_IconTitle; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.HBoxContainer.IdTitle + /// + public IdTitle S_IdTitle => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_HBoxContainer.L_IdTitle; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.HBoxContainer.NameTitle + /// + public NameTitle S_NameTitle => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_HBoxContainer.L_NameTitle; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.HBoxContainer.WeightTitle + /// + public WeightTitle S_WeightTitle => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_HBoxContainer.L_WeightTitle; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.HBoxContainer.ExtraTitle + /// + public ExtraTitle S_ExtraTitle => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_HBoxContainer.L_ExtraTitle; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.ExpandButton + /// + public ExpandButton S_ExpandButton => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_ExpandButton; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.Icon + /// + public Icon S_Icon => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_Icon; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.IdLabel + /// + public IdLabel S_IdLabel => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_IdLabel; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.NameLabel + /// + public NameLabel S_NameLabel => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_NameLabel; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.LineEdit + /// + public LineEdit S_LineEdit => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_LineEdit; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.CenterContainer.DeleteButton + /// + public DeleteButton S_DeleteButton => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_CenterContainer.L_DeleteButton; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.CenterContainer + /// + public CenterContainer S_CenterContainer => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_CenterContainer; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject + /// + public MarkObject S_MarkObject => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer + /// + public ScrollContainer S_ScrollContainer => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer; /// /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel @@ -330,11 +747,6 @@ public Panel S_Panel => L_MarginContainer.L_VBoxContainer.L_Panel; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer - /// - public VBoxContainer S_VBoxContainer => L_MarginContainer.L_VBoxContainer; - - /// /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer /// public MarginContainer S_MarginContainer => L_MarginContainer; diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMarkPanel.cs b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMarkPanel.cs index fbaaf66..1f5d47f 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMarkPanel.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMarkPanel.cs @@ -1,3 +1,5 @@ +using System.Collections.Generic; +using Config; using Godot; namespace UI.MapEditorCreateMark; @@ -5,18 +7,46 @@ public partial class MapEditorCreateMarkPanel : MapEditorCreateMark { + private UiGrid _grid; + public override void OnCreateUi() { S_AddMark.Instance.Pressed += OnAddMark; + + _grid = new UiGrid(S_MarkObject, typeof(MarkObjectCell)); + _grid.SetColumns(1); + _grid.SetHorizontalExpand(true); + _grid.SetCellOffset(new Vector2I(0, 5)); } public override void OnDestroyUi() { } + + /// + /// 初始化数据 + /// + public void InitData(RoomPreinstall preinstall, int waveIndex) + { + var optionButton = S_WaveOption.Instance; + for (var i = 0; i < preinstall.WaveList.Count; i++) + { + optionButton.AddItem($"第{i + 1}波"); + } + optionButton.Selected = waveIndex; + } + + //点击添加标记按钮 private void OnAddMark() { - EditorWindowManager.ShowSelectObject("选择物体", this); + EditorWindowManager.ShowSelectObject(OnSelectObject, this); + } + + //选中物体回调 + private void OnSelectObject(ExcelConfig.ActivityObject activityObject) + { + _grid.Add(activityObject); } } diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MarkObjectCell.cs b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MarkObjectCell.cs new file mode 100644 index 0000000..2281d91 --- /dev/null +++ b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MarkObjectCell.cs @@ -0,0 +1,33 @@ +using Config; + +namespace UI.MapEditorCreateMark; + +public class MarkObjectCell : UiCell +{ + public override void OnInit() + { + CellNode.L_CenterContainer.L_DeleteButton.Instance.Pressed += OnDeleteClick; + } + + public override void OnSetData(ExcelConfig.ActivityObject data) + { + if (string.IsNullOrEmpty(data.Icon)) + { + CellNode.L_Icon.Instance.Visible = false; + } + else + { + CellNode.L_Icon.Instance.Visible = true; + CellNode.L_Icon.Instance.Texture = ResourceManager.LoadTexture2D(data.Icon); + } + + CellNode.L_IdLabel.Instance.Text = data.Id; + CellNode.L_NameLabel.Instance.Text = data.Name; + } + + //点击删除按钮 + private void OnDeleteClick() + { + Grid.RemoveByIndex(Index); + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/EditorWaveCell.cs b/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/EditorWaveCell.cs index 5224a77..49af210 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/EditorWaveCell.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/EditorWaveCell.cs @@ -35,9 +35,13 @@ _grid.Destroy(); } + //添加标记 private void OnAddMark() { - EditorWindowManager.ShowCreateMark(); + //当前选中的预设 + var preinstall = CellNode.UiPanel.GetSelectPreinstall(); + //打开添加标记页面 + EditorWindowManager.ShowCreateMark(preinstall, Index); // var info = new MarkInfo(); // Data.Add(info); // _grid.Add(info); @@ -57,7 +61,7 @@ } else { - textureButton.TextureNormal = ResourceManager.LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_Left_png); + textureButton.TextureNormal = ResourceManager.LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_Right_png); } } diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMarkPanel.cs b/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMarkPanel.cs index ed3a59e..c08b525 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMarkPanel.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMarkPanel.cs @@ -60,6 +60,20 @@ } /// + /// 获取当前选中的预设 + /// + public RoomPreinstall GetSelectPreinstall() + { + var index = S_PreinstallOption.Instance.Selected; + var preinstall = EditorTileMap.RoomSplit.Preinstall; + if (index >= preinstall.Count) + { + return null; + } + return preinstall[index]; + } + + /// /// 刷新预设下拉框 /// public void RefreshPreinstallSelect(int index = -1) diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorProject/MapEditorProjectPanel.cs b/DungeonShooting_Godot/src/game/ui/mapEditorProject/MapEditorProjectPanel.cs index 3cb597a..eac5a69 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorProject/MapEditorProjectPanel.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorProject/MapEditorProjectPanel.cs @@ -2,9 +2,6 @@ using System.Collections.Generic; using System.Linq; using Godot; -using UI.EditorWindow; -using UI.MapEditorCreateGroup; -using UI.MapEditorCreateRoom; namespace UI.MapEditorProject; diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorProject/RoomButtonCell.cs b/DungeonShooting_Godot/src/game/ui/mapEditorProject/RoomButtonCell.cs index 8fdb45e..551f33a 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorProject/RoomButtonCell.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorProject/RoomButtonCell.cs @@ -4,43 +4,16 @@ public class RoomButtonCell : UiCell { - private bool _focus = false; - - public override void OnInit() - { - CellNode.Instance.FocusExited += OnFocusExited; - } - public override void OnSetData(DungeonRoomSplit data) { - _focus = false; CellNode.L_RoomName.Instance.Text = data.RoomInfo.RoomName; CellNode.L_RoomType.Instance.Text = DungeonManager.DungeonRoomTypeToDescribeString(data.RoomInfo.RoomType); CellNode.Instance.TooltipText = "路径: " + data.RoomPath; - CellNode.Instance.ReleaseFocus(); } - public override void OnDestroy() + public override void OnDoubleClick() { - CellNode.Instance.FocusExited -= OnFocusExited; - } - - public override void OnClick() - { - if (_focus) - { - //打开房间编辑器 - CellNode.UiPanel.SelectRoom(Data); - CellNode.Instance.ReleaseFocus(); - } - else - { - _focus = true; - } - } - - private void OnFocusExited() - { - _focus = false; + //打开房间编辑器 + CellNode.UiPanel.SelectRoom(Data); } } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorSelectObject/MapEditorSelectObjectPanel.cs b/DungeonShooting_Godot/src/game/ui/mapEditorSelectObject/MapEditorSelectObjectPanel.cs index 718b5e0..fa7b5b9 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorSelectObject/MapEditorSelectObjectPanel.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorSelectObject/MapEditorSelectObjectPanel.cs @@ -1,3 +1,4 @@ +using System; using System.Linq; using Config; using Godot; @@ -6,6 +7,11 @@ public partial class MapEditorSelectObjectPanel : MapEditorSelectObject { + /// + /// 双击选中物体事件 + /// + public event Action SelectObjectEvent; + public class TypeButtonData { /// @@ -86,4 +92,23 @@ ).ToArray(); _objectGrid.SetDataList(arr); } + + /// + /// 选中对象 + /// + public void SelectCell(ExcelConfig.ActivityObject activityObject) + { + if (SelectObjectEvent != null) + { + SelectObjectEvent(activityObject); + } + } + + /// + /// 获取选中的数据 + /// + public ExcelConfig.ActivityObject GetSelectData() + { + return _objectGrid.SelectData; + } } diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorSelectObject/ObjectButtonCell.cs b/DungeonShooting_Godot/src/game/ui/mapEditorSelectObject/ObjectButtonCell.cs index 60c1fbe..9c4e03f 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorSelectObject/ObjectButtonCell.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorSelectObject/ObjectButtonCell.cs @@ -23,6 +23,12 @@ CellNode.L_PreviewImage.Instance.Visible = false; } } + + public override void OnDoubleClick() + { + //双击选择该对象 + CellNode.UiPanel.SelectCell(Data); + } public override void OnSelect() {