diff --git a/DungeonShooting_Godot/prefab/ui/MapEditorCreateMark.tscn b/DungeonShooting_Godot/prefab/ui/MapEditorCreateMark.tscn index 41a829f..9a36ff5 100644 --- a/DungeonShooting_Godot/prefab/ui/MapEditorCreateMark.tscn +++ b/DungeonShooting_Godot/prefab/ui/MapEditorCreateMark.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=7 format=3 uid="uid://bt4xo2lb4h4rx"] +[gd_scene load_steps=9 format=3 uid="uid://bt4xo2lb4h4rx"] [ext_resource type="Script" path="res://src/game/ui/mapEditorCreateMark/MapEditorCreateMarkPanel.cs" id="1_cjivg"] [ext_resource type="Texture2D" uid="uid://n4atvj5fkcpg" path="res://resource/sprite/ui/commonIcon/Add.png" id="2_pxemo"] @@ -6,6 +6,8 @@ [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"] [ext_resource type="Script" path="res://src/game/ui/mapEditorCreateMark/attribute/NumberAttribute.cs" id="6_1ym7l"] +[ext_resource type="Script" path="res://src/game/ui/mapEditorCreateMark/attribute/ObjectAttribute.cs" id="7_516p2"] +[ext_resource type="Texture2D" uid="uid://dggb6p4sdmfry" path="res://resource/sprite/ui/commonIcon/Edit.png" id="7_yeuy4"] [node name="MapEditorCreateMark" type="Control"] layout_mode = 3 @@ -24,7 +26,7 @@ grow_horizontal = 2 grow_vertical = 2 theme_override_constants/margin_left = 20 -theme_override_constants/margin_top = 50 +theme_override_constants/margin_top = 20 theme_override_constants/margin_right = 20 theme_override_constants/margin_bottom = 20 @@ -129,11 +131,38 @@ max_value = 9999.0 custom_arrow_step = 1.0 -[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3"] +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3"] layout_mode = 2 size_flags_horizontal = 3 -[node name="DelayNameLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer3/HBoxContainer"] +[node name="PreloadingContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="PreloadingNameLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/PreloadingContainer"] +custom_minimum_size = Vector2(250, 0) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +size_flags_stretch_ratio = 30.0 +text = "提前加载:" +horizontal_alignment = 2 +vertical_alignment = 1 + +[node name="PreloadingCheck" type="CheckBox" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/PreloadingContainer"] +custom_minimum_size = Vector2(0, 43) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 +size_flags_stretch_ratio = 70.0 +flat = true + +[node name="DelayContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="DelayNameLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/DelayContainer"] +custom_minimum_size = Vector2(250, 0) layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 @@ -142,11 +171,11 @@ horizontal_alignment = 2 vertical_alignment = 1 -[node name="DelayInput" type="SpinBox" parent="MarginContainer/VBoxContainer/HBoxContainer3/HBoxContainer"] +[node name="DelayInput" type="SpinBox" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/DelayContainer"] custom_minimum_size = Vector2(0, 43) layout_mode = 2 size_flags_horizontal = 3 -size_flags_vertical = 0 +size_flags_vertical = 4 size_flags_stretch_ratio = 70.0 max_value = 30.0 step = 0.01 @@ -179,7 +208,7 @@ layout_mode = 2 [node name="IconTitle" type="Label" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/HBoxContainer"] -custom_minimum_size = Vector2(80, 0) +custom_minimum_size = Vector2(100, 0) layout_mode = 2 text = "图标" horizontal_alignment = 1 @@ -226,15 +255,19 @@ layout_mode = 2 size_flags_vertical = 3 -[node name="MarkObject" type="VBoxContainer" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer"] +[node name="MarkObject" type="PanelContainer" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer"] layout_mode = 2 size_flags_horizontal = 3 -[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject"] +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject/VBoxContainer"] custom_minimum_size = Vector2(0, 100) layout_mode = 2 -[node name="ExpandButton" type="Button" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject/HBoxContainer"] +[node name="ExpandButton" type="Button" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject/VBoxContainer/HBoxContainer"] custom_minimum_size = Vector2(80, 80) layout_mode = 2 size_flags_vertical = 4 @@ -242,13 +275,13 @@ flat = true icon_alignment = 1 -[node name="Icon" type="TextureRect" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject/HBoxContainer"] +[node name="Icon" type="TextureRect" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject/VBoxContainer/HBoxContainer"] material = ExtResource("2_xb40b") -custom_minimum_size = Vector2(80, 80) +custom_minimum_size = Vector2(100, 80) layout_mode = 2 stretch_mode = 5 -[node name="IdLabel" type="Label" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject/HBoxContainer"] +[node name="IdLabel" type="Label" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject/VBoxContainer/HBoxContainer"] custom_minimum_size = Vector2(250, 0) layout_mode = 2 size_flags_vertical = 1 @@ -257,7 +290,7 @@ vertical_alignment = 1 autowrap_mode = 3 -[node name="NameLabel" type="Label" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject/HBoxContainer"] +[node name="NameLabel" type="Label" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject/VBoxContainer/HBoxContainer"] custom_minimum_size = Vector2(350, 0) layout_mode = 2 size_flags_vertical = 1 @@ -266,7 +299,7 @@ vertical_alignment = 1 autowrap_mode = 3 -[node name="TypeLabel" type="Label" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject/HBoxContainer"] +[node name="TypeLabel" type="Label" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject/VBoxContainer/HBoxContainer"] custom_minimum_size = Vector2(150, 0) layout_mode = 2 size_flags_vertical = 1 @@ -275,7 +308,7 @@ vertical_alignment = 1 autowrap_mode = 3 -[node name="LineEdit" type="SpinBox" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject/HBoxContainer"] +[node name="LineEdit" type="SpinBox" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject/VBoxContainer/HBoxContainer"] custom_minimum_size = Vector2(150, 43) layout_mode = 2 size_flags_vertical = 4 @@ -283,11 +316,11 @@ value = 100.0 custom_arrow_step = 1.0 -[node name="CenterContainer" type="CenterContainer" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject/HBoxContainer"] +[node name="CenterContainer" type="CenterContainer" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject/VBoxContainer/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 -[node name="DeleteButton" type="Button" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject/HBoxContainer/CenterContainer"] +[node name="DeleteButton" type="Button" parent="MarginContainer/VBoxContainer/Panel/VBoxContainer/ScrollContainer/MarkObject/VBoxContainer/HBoxContainer/CenterContainer"] custom_minimum_size = Vector2(43, 43) layout_mode = 2 size_flags_vertical = 4 @@ -295,36 +328,112 @@ [node name="ExpandPanel" type="MarginContainer" parent="."] layout_mode = 2 -offset_left = 68.0 -offset_top = -588.0 -offset_right = 332.0 -offset_bottom = -518.0 +offset_top = -423.0 +offset_right = 667.0 +offset_bottom = -353.0 theme_override_constants/margin_left = 80 theme_override_constants/margin_right = 2 [node name="ExpandGrid" type="GridContainer" parent="ExpandPanel"] layout_mode = 2 -columns = 3 -[node name="NumberBar" type="HBoxContainer" parent="."] +[node name="NumberBar" type="Control" parent="."] custom_minimum_size = Vector2(0, 70) layout_mode = 2 -offset_left = 107.0 -offset_top = -362.0 -offset_right = 289.0 -offset_bottom = -292.0 +anchors_preset = 0 +offset_top = -320.0 +offset_right = 700.0 +offset_bottom = -250.0 size_flags_horizontal = 3 script = ExtResource("6_1ym7l") [node name="AttrName" type="Label" parent="NumberBar"] -layout_mode = 2 +layout_mode = 1 +anchors_preset = 4 +anchor_top = 0.5 +anchor_bottom = 0.5 +offset_top = -21.5 +offset_right = 250.0 +offset_bottom = 21.5 +grow_vertical = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 40.0 text = "属性:" [node name="NumInput" type="SpinBox" parent="NumberBar"] custom_minimum_size = Vector2(0, 43) -layout_mode = 2 +layout_mode = 1 +anchors_preset = 4 +anchor_top = 0.5 +anchor_bottom = 0.5 +offset_left = 250.0 +offset_top = -21.0 +offset_right = 414.0 +offset_bottom = 22.0 +grow_vertical = 2 size_flags_horizontal = 3 size_flags_vertical = 4 size_flags_stretch_ratio = 60.0 + +[node name="ObjectBar" type="Control" parent="."] +custom_minimum_size = Vector2(0, 70) +layout_mode = 2 +anchors_preset = 0 +offset_top = -234.0 +offset_right = 700.0 +offset_bottom = -164.0 +size_flags_horizontal = 3 +script = ExtResource("7_516p2") + +[node name="AttrName" type="Label" parent="ObjectBar"] +layout_mode = 1 +anchors_preset = 4 +anchor_top = 0.5 +anchor_bottom = 0.5 +offset_top = -21.5 +offset_right = 250.0 +offset_bottom = 21.5 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 25.0 +text = "物体:" + +[node name="HBoxContainer" type="HBoxContainer" parent="ObjectBar"] +layout_mode = 1 +anchors_preset = 4 +anchor_top = 0.5 +anchor_bottom = 0.5 +offset_left = 250.0 +offset_top = -35.0 +offset_right = 539.0 +offset_bottom = 35.0 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 75.0 + +[node name="SelectButton" type="Button" parent="ObjectBar/HBoxContainer"] +custom_minimum_size = Vector2(43, 43) +layout_mode = 2 +size_flags_vertical = 4 +size_flags_stretch_ratio = 60.0 +icon = ExtResource("7_yeuy4") + +[node name="ObjectIcon" type="TextureRect" parent="ObjectBar/HBoxContainer"] +visible = false +material = ExtResource("2_xb40b") +custom_minimum_size = Vector2(70, 70) +layout_mode = 2 +stretch_mode = 5 + +[node name="ObjectName" type="Label" parent="ObjectBar/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "<未选择>" + +[node name="DeleteButton" type="Button" parent="ObjectBar/HBoxContainer"] +visible = false +custom_minimum_size = Vector2(43, 43) +layout_mode = 2 +size_flags_vertical = 4 +size_flags_stretch_ratio = 60.0 +icon = ExtResource("3_7xihk") diff --git a/DungeonShooting_Godot/prefab/weapon/Weapon0001.tscn b/DungeonShooting_Godot/prefab/weapon/Weapon0001.tscn index 46ffb26..2a88133 100644 --- a/DungeonShooting_Godot/prefab/weapon/Weapon0001.tscn +++ b/DungeonShooting_Godot/prefab/weapon/Weapon0001.tscn @@ -10,12 +10,20 @@ shader = ExtResource("3_x1q03") shader_parameter/blend = Color(0, 0, 0, 0.470588) shader_parameter/schedule = 1.0 +shader_parameter/modulate = Color(1, 1, 1, 1) +shader_parameter/show_outline = true +shader_parameter/outline_color = Color(0, 0, 0, 1) +shader_parameter/outline_rainbow = false [sub_resource type="ShaderMaterial" id="ShaderMaterial_bj7y3"] resource_local_to_scene = true shader = ExtResource("3_x1q03") shader_parameter/blend = Color(1, 1, 1, 1) shader_parameter/schedule = 0.0 +shader_parameter/modulate = Color(1, 1, 1, 1) +shader_parameter/show_outline = true +shader_parameter/outline_color = Color(0, 0, 0, 1) +shader_parameter/outline_rainbow = false [node name="Weapon0001" node_paths=PackedStringArray("FirePoint", "ShellPoint", "GripPoint", "AnimationPlayer", "ShadowSprite", "AnimatedSprite", "Collision") instance=ExtResource("1_ykl0r")] script = ExtResource("2_t56pk") diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Room1/Room1_preinstall.json b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Room1/Room1_preinstall.json index 54d97a5..e055758 100644 --- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Room1/Room1_preinstall.json +++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Room1/Room1_preinstall.json @@ -1 +1 @@ -[{"Name":"test1","Weight":100,"Remark":"","WaveList":[[{"Position":{"X":-44,"Y":-58},"Size":{"X":20,"Y":10},"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"15","ResidueAmmo":"45"}}]},{"Position":{"X":113,"Y":-31},"Size":{"X":8,"Y":74},"DelayTime":0,"MarkList":[{"Id":"weapon0002","Weight":100,"Attr":{"CurrAmmon":"0","ResidueAmmo":"0"}}]},{"Position":{"X":64,"Y":28},"Size":{"X":106,"Y":65},"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"0","ResidueAmmo":"0"}}]}],[{"Position":{"X":-42,"Y":-23},"Size":{"X":48,"Y":33},"DelayTime":0,"MarkList":[{"Id":"weapon0005","Weight":100,"Attr":{"CurrAmmon":"0","ResidueAmmo":"0"}}]},{"Position":{"X":23,"Y":18},"Size":{"X":22,"Y":82},"DelayTime":0,"MarkList":[{"Id":"weapon0006","Weight":100,"Attr":{"CurrAmmon":"0","ResidueAmmo":"0"}}]},{"Position":{"X":5,"Y":-46},"Size":{"X":61,"Y":40},"DelayTime":3,"MarkList":[{"Id":"weapon0007","Weight":100,"Attr":{"CurrAmmon":"60","ResidueAmmo":"300"}},{"Id":"enemy0001","Weight":100,"Attr":{"Weapon":"0","CurrAmmon":"100","ResidueAmmo":"50"}}]}]]}] \ No newline at end of file +[{"Name":"test1","Weight":100,"Remark":"","WaveList":[[{"Position":{"X":63,"Y":26},"Size":{"X":90,"Y":45},"Preloading":false,"DelayTime":0,"MarkList":[{"Id":"weapon0002","Weight":100,"Attr":{"CurrAmmon":"0","ResidueAmmo":"0"}}]},{"Position":{"X":72,"Y":116},"Size":{"X":87,"Y":16},"Preloading":false,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"0","ResidueAmmo":"0"}}]},{"Position":{"X":64,"Y":36},"Size":{"X":0,"Y":0},"Preloading":true,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"}}]}],[{"Position":{"X":-42,"Y":-23},"Size":{"X":48,"Y":33},"Preloading":false,"DelayTime":0,"MarkList":[{"Id":"weapon0005","Weight":100,"Attr":{"CurrAmmon":"0","ResidueAmmo":"0"}}]},{"Position":{"X":51,"Y":33},"Size":{"X":57,"Y":36},"Preloading":false,"DelayTime":0,"MarkList":[{"Id":"weapon0006","Weight":100,"Attr":{"CurrAmmon":"0","ResidueAmmo":"0"}}]},{"Position":{"X":5,"Y":-46},"Size":{"X":61,"Y":40},"Preloading":false,"DelayTime":1,"MarkList":[{"Id":"weapon0007","Weight":100,"Attr":{"CurrAmmon":"59","ResidueAmmo":"300"}},{"Id":"enemy0001","Weight":100,"Attr":{"Weapon":"0001","CurrAmmon":"15","ResidueAmmo":"15"}}]},{"Position":{"X":12,"Y":-10},"Size":{"X":0,"Y":0},"Preloading":true,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Weapon":"0013","CurrAmmon":"15","ResidueAmmo":"15"}},{"Id":"enemy0001","Weight":100,"Attr":{"Weapon":"0003","CurrAmmon":"6","ResidueAmmo":"6"}}]}]]},{"Name":"test2","Weight":100,"Remark":"","WaveList":[]}] \ No newline at end of file diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityId.cs b/DungeonShooting_Godot/src/framework/activity/ActivityId.cs new file mode 100644 index 0000000..f4232b5 --- /dev/null +++ b/DungeonShooting_Godot/src/framework/activity/ActivityId.cs @@ -0,0 +1,106 @@ + +/// +/// Activity注册类id前缀 +/// +public static class ActivityId +{ + /// + /// 测试单位 + /// + public const string Test = "test"; + /// + /// 角色 + /// + public const string Role = "role"; + /// + /// 敌人 + /// + public const string Enemy = "enemy"; + /// + /// 武器 + /// + public const string Weapon = "weapon"; + /// + /// 子弹 + /// + public const string Bullet = "bullet"; + /// + /// 弹壳 + /// + public const string Shell = "shell"; + /// + /// 特效 + /// + public const string Effect = "effect"; + /// + /// 道具 + /// + public const string Prop = "prop"; + /// + /// 其他类型 + /// + public const string Other = "other"; + + /// + /// 根据 ActivityType 中的枚举类型获取类型名称的字符串 + /// + public static string GetIdPrefix(ActivityType activityType) + { + switch (activityType) + { + case ActivityType.None: + return ""; + case ActivityType.Test: + return Test; + case ActivityType.Role: + case ActivityType.Player: + return Role; + case ActivityType.Enemy: + return Enemy; + case ActivityType.Weapon: + return Weapon; + case ActivityType.Bullet: + return Bullet; + case ActivityType.Shell: + return Shell; + case ActivityType.Effect: + return Effect; + case ActivityType.Prop: + return Prop; + case ActivityType.Other: + return Other; + } + + return ""; + } + + public static string GetTypeName(ActivityType activityType) + { + switch (activityType) + { + case ActivityType.None: + return ""; + case ActivityType.Test: + return "测试"; + case ActivityType.Role: + case ActivityType.Player: + return "角色"; + case ActivityType.Enemy: + return "敌人"; + case ActivityType.Weapon: + return "武器"; + case ActivityType.Bullet: + return "子弹"; + case ActivityType.Shell: + return "弹壳"; + case ActivityType.Effect: + return "特效"; + case ActivityType.Prop: + return "道具"; + case ActivityType.Other: + return "其他"; + } + + return ""; + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityType.cs b/DungeonShooting_Godot/src/framework/activity/ActivityType.cs new file mode 100644 index 0000000..3a82149 --- /dev/null +++ b/DungeonShooting_Godot/src/framework/activity/ActivityType.cs @@ -0,0 +1,51 @@ + +/// +/// 物体类型 +/// +public enum ActivityType +{ + /// + /// 无类型 + /// + None, + /// + /// 玩家 + /// + Player, + /// + /// 测试对象 + /// + Test, + /// + /// 角色 + /// + Role, + /// + /// 敌人 + /// + Enemy, + /// + /// 武器 + /// + Weapon, + /// + /// 子弹 + /// + Bullet, + /// + /// 弹壳 + /// + Shell, + /// + /// 特效 + /// + Effect, + /// + /// 道具 + /// + Prop, + /// + /// 其它类型 + /// + Other = 99, +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/framework/map/data/MarkInfo.cs b/DungeonShooting_Godot/src/framework/map/data/MarkInfo.cs index 610f639..bab594a 100644 --- a/DungeonShooting_Godot/src/framework/map/data/MarkInfo.cs +++ b/DungeonShooting_Godot/src/framework/map/data/MarkInfo.cs @@ -18,6 +18,12 @@ /// [JsonInclude] public SerializeVector2 Size; + + /// + /// 标记数据是否在玩家进入房间前加载, 如果为 true, 则 DelayTime 会失效 + /// + [JsonInclude] + public bool Preloading; /// /// 延时时间 @@ -39,6 +45,7 @@ Position = mark.Position; Size = mark.Size; DelayTime = mark.DelayTime; + Preloading = mark.Preloading; MarkList = mark.MarkList; } } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs b/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs index 7a0c8ee..4cd0b62 100644 --- a/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs +++ b/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs @@ -16,7 +16,7 @@ /// 物体类型 /// [Export] - public ActivityIdPrefix.ActivityPrefixType Type = ActivityIdPrefix.ActivityPrefixType.NonePrefix; + public ActivityType Type = ActivityType.None; /// /// 创建物体的表达式, 该表达式计算出的id会自动加上 Type 前缀 @@ -156,7 +156,7 @@ /// public void BeReady(RoomInfo roomInfo) { - if (_currentExpression == null || Type == ActivityIdPrefix.ActivityPrefixType.Player) + if (_currentExpression == null || Type == ActivityType.Player) { return; } diff --git a/DungeonShooting_Godot/src/framework/map/mark/ActivityMark_HandlerExpression.cs b/DungeonShooting_Godot/src/framework/map/mark/ActivityMark_HandlerExpression.cs index d8d4662..ba82742 100644 --- a/DungeonShooting_Godot/src/framework/map/mark/ActivityMark_HandlerExpression.cs +++ b/DungeonShooting_Godot/src/framework/map/mark/ActivityMark_HandlerExpression.cs @@ -9,7 +9,7 @@ /// /// 物体类型 /// 预制表达式字段名称, 注意是字段名称, 而不是内容 - public ActivityObjectResult CreateActivityObjectFromExpression(ActivityIdPrefix.ActivityPrefixType type, string expressionFieldName) where T : ActivityObject + public ActivityObjectResult CreateActivityObjectFromExpression(ActivityType type, string expressionFieldName) where T : ActivityObject { if (_currentExpression.TryGetValue(expressionFieldName, out var expressionData)) { @@ -17,7 +17,7 @@ { return null; } - var id = ActivityIdPrefix.GetNameByPrefixType(type) + expressionData.Id; + var id = ActivityId.GetIdPrefix(type) + expressionData.Id; var activityObject = ActivityObject.Create(id); if (activityObject == null) { @@ -32,21 +32,21 @@ return null; } - private void HandlerExpressionArgs(ActivityIdPrefix.ActivityPrefixType type, ActivityObject instance, ActivityExpressionData expressionData) + private void HandlerExpressionArgs(ActivityType type, ActivityObject instance, ActivityExpressionData expressionData) { switch (type) { - case ActivityIdPrefix.ActivityPrefixType.NonePrefix: + case ActivityType.None: break; - case ActivityIdPrefix.ActivityPrefixType.Player: + case ActivityType.Player: break; - case ActivityIdPrefix.ActivityPrefixType.Test: + case ActivityType.Test: break; - case ActivityIdPrefix.ActivityPrefixType.Role: + case ActivityType.Role: break; - case ActivityIdPrefix.ActivityPrefixType.Enemy: + case ActivityType.Enemy: break; - case ActivityIdPrefix.ActivityPrefixType.Weapon: + case ActivityType.Weapon: { var weapon = (Weapon)instance; //当前弹夹弹药量 @@ -61,11 +61,11 @@ } } break; - case ActivityIdPrefix.ActivityPrefixType.Bullet: + case ActivityType.Bullet: break; - case ActivityIdPrefix.ActivityPrefixType.Shell: + case ActivityType.Shell: break; - case ActivityIdPrefix.ActivityPrefixType.Other: + case ActivityType.Other: break; } } diff --git a/DungeonShooting_Godot/src/framework/map/mark/EnemyMark.cs b/DungeonShooting_Godot/src/framework/map/mark/EnemyMark.cs index 8eac590..7c0fdc3 100644 --- a/DungeonShooting_Godot/src/framework/map/mark/EnemyMark.cs +++ b/DungeonShooting_Godot/src/framework/map/mark/EnemyMark.cs @@ -44,7 +44,7 @@ public override void _Ready() { - Type = ActivityIdPrefix.ActivityPrefixType.Enemy; + Type = ActivityType.Enemy; Layer = RoomLayerEnum.YSortLayer; Altitude = 0; } @@ -78,7 +78,7 @@ //生成武器 private void CreateWeapon(Enemy enemy, Vector2 pos, string fieldName) { - var result = CreateActivityObjectFromExpression(ActivityIdPrefix.ActivityPrefixType.Weapon, fieldName); + var result = CreateActivityObjectFromExpression(ActivityType.Weapon, fieldName); if (result != null) { //如果不能放下, 则直接扔地上 diff --git a/DungeonShooting_Godot/src/framework/ui/UiManager.cs b/DungeonShooting_Godot/src/framework/ui/UiManager.cs index efe3618..0ec00a6 100644 --- a/DungeonShooting_Godot/src/framework/ui/UiManager.cs +++ b/DungeonShooting_Godot/src/framework/ui/UiManager.cs @@ -126,6 +126,7 @@ } var packedScene = ResourceLoader.Load("res://" + GameConfig.UiPrefabDir + uiName + ".tscn"); var uiBase = packedScene.Instantiate(); + uiBase.Visible = false; uiBase.PrevUi = prevUi; var canvasLayer = GetUiLayer(uiBase.Layer); canvasLayer.AddChild(uiBase); @@ -241,4 +242,17 @@ return new T[0]; } + + /// + /// 获取Ui实例数量 + /// + public static int GetUiInstanceCount(string uiName) + { + if (_recordUiMap.TryGetValue(uiName, out var list)) + { + return list.Count; + } + + return 0; + } } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/manager/ActivityIdPrefix.cs b/DungeonShooting_Godot/src/game/manager/ActivityIdPrefix.cs deleted file mode 100644 index 6c3d949..0000000 --- a/DungeonShooting_Godot/src/game/manager/ActivityIdPrefix.cs +++ /dev/null @@ -1,122 +0,0 @@ - -//Activity注册类id前缀 -public static class ActivityIdPrefix -{ - public enum ActivityPrefixType - { - /// - /// 无前缀 - /// - NonePrefix, - /// - /// 玩家 - /// - Player, - /// - /// 测试对象 - /// - Test, - /// - /// 角色 - /// - Role, - /// - /// 敌人 - /// - Enemy, - /// - /// 武器 - /// - Weapon, - /// - /// 子弹 - /// - Bullet, - /// - /// 弹壳 - /// - Shell, - /// - /// 特效 - /// - Effect, - /// - /// 道具 - /// - Prop, - /// - /// 其它类型 - /// - Other = 99, - } - - /// - /// 测试单位 - /// - public const string Test = "test"; - /// - /// 角色 - /// - public const string Role = "role"; - /// - /// 敌人 - /// - public const string Enemy = "enemy"; - /// - /// 武器 - /// - public const string Weapon = "weapon"; - /// - /// 子弹 - /// - public const string Bullet = "bullet"; - /// - /// 弹壳 - /// - public const string Shell = "shell"; - /// - /// 特效 - /// - public const string Effect = "effect"; - /// - /// 道具 - /// - public const string Prop = "prop"; - /// - /// 其他类型 - /// - public const string Other = "other"; - - /// - /// 根据 ActivityPrefixType 中的枚举类型获取类型名称的字符串 - /// - public static string GetNameByPrefixType(ActivityPrefixType prefixType) - { - switch (prefixType) - { - case ActivityPrefixType.NonePrefix: - return ""; - case ActivityPrefixType.Test: - return Test; - case ActivityPrefixType.Role: - case ActivityPrefixType.Player: - return Role; - case ActivityPrefixType.Enemy: - return Enemy; - case ActivityPrefixType.Weapon: - return Weapon; - case ActivityPrefixType.Bullet: - return Bullet; - case ActivityPrefixType.Shell: - return Shell; - case ActivityPrefixType.Effect: - return Effect; - case ActivityPrefixType.Prop: - return Prop; - case ActivityPrefixType.Other: - return Other; - } - - return ""; - } -} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/manager/EditorWindowManager.cs b/DungeonShooting_Godot/src/game/manager/EditorWindowManager.cs index 1d17f07..f6791e1 100644 --- a/DungeonShooting_Godot/src/game/manager/EditorWindowManager.cs +++ b/DungeonShooting_Godot/src/game/manager/EditorWindowManager.cs @@ -62,7 +62,6 @@ new EditorWindowPanel.ButtonData("取消", () => { window.CloseWindow(); - onClose(false); }) ); var body = window.OpenBody(UiManager.UiName.EditorTips); @@ -219,18 +218,21 @@ }) ); } - + /// /// 打开选中的物体 /// + /// 查找的类型, 如果为 none, 则查找所有类型数据 /// 选中物体时回调 /// 所属父级Ui - public static void ShowSelectObject(Action onSelectObject, UiBase parentUi = null) + public static void ShowSelectObject(ActivityType findType, Action onSelectObject, UiBase parentUi = null) { var window = CreateWindowInstance(parentUi); window.S_Window.Instance.Size = new Vector2I(1000, 700); window.SetWindowTitle("选择物体"); var body = window.OpenBody(UiManager.UiName.MapEditorSelectObject); + //设置显示的物体类型 + body.SetShowType(findType); window.SetButtonList( new EditorWindowPanel.ButtonData("确定", () => { diff --git a/DungeonShooting_Godot/src/game/manager/NameManager.cs b/DungeonShooting_Godot/src/game/manager/NameManager.cs index e8256ba..e823f5b 100644 --- a/DungeonShooting_Godot/src/game/manager/NameManager.cs +++ b/DungeonShooting_Godot/src/game/manager/NameManager.cs @@ -6,28 +6,28 @@ /// public static string GetActivityTypeName(int type) { - switch ((ActivityIdPrefix.ActivityPrefixType)type) + switch ((ActivityType)type) { - case ActivityIdPrefix.ActivityPrefixType.NonePrefix: + case ActivityType.None: return ""; - case ActivityIdPrefix.ActivityPrefixType.Test: + case ActivityType.Test: return "测试"; - case ActivityIdPrefix.ActivityPrefixType.Role: - case ActivityIdPrefix.ActivityPrefixType.Player: + case ActivityType.Role: + case ActivityType.Player: return "角色"; - case ActivityIdPrefix.ActivityPrefixType.Enemy: + case ActivityType.Enemy: return "敌人"; - case ActivityIdPrefix.ActivityPrefixType.Weapon: + case ActivityType.Weapon: return "武器"; - case ActivityIdPrefix.ActivityPrefixType.Bullet: + case ActivityType.Bullet: return "子弹"; - case ActivityIdPrefix.ActivityPrefixType.Shell: + case ActivityType.Shell: return "弹壳"; - case ActivityIdPrefix.ActivityPrefixType.Effect: + case ActivityType.Effect: return "特效"; - case ActivityIdPrefix.ActivityPrefixType.Prop: + case ActivityType.Prop: return "道具"; - case ActivityIdPrefix.ActivityPrefixType.Other: + case ActivityType.Other: return "其他"; } diff --git a/DungeonShooting_Godot/src/game/room/DungeonManager.cs b/DungeonShooting_Godot/src/game/room/DungeonManager.cs index 558c020..da2f8b5 100644 --- a/DungeonShooting_Godot/src/game/room/DungeonManager.cs +++ b/DungeonShooting_Godot/src/game/room/DungeonManager.cs @@ -135,7 +135,7 @@ //SoundManager.PlayMusic(ResourcePath.resource_sound_bgm_Intro_ogg, -17f); //初始房间创建玩家标记 - var playerBirthMark = StartRoom.ActivityMarks.FirstOrDefault(mark => mark.Type == ActivityIdPrefix.ActivityPrefixType.Player); + var playerBirthMark = StartRoom.ActivityMarks.FirstOrDefault(mark => mark.Type == ActivityType.Player); //创建玩家 var player = ActivityObject.Create(ActivityObject.Ids.Id_role0001); if (playerBirthMark != null) diff --git a/DungeonShooting_Godot/src/game/ui/mapEditor/TileView/EditorTileMap.cs b/DungeonShooting_Godot/src/game/ui/mapEditor/TileView/EditorTileMap.cs index afca70a..737783f 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditor/TileView/EditorTileMap.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditor/TileView/EditorTileMap.cs @@ -58,6 +58,10 @@ /// 自定义图块顶层 /// public const int CustomTopLayer = 5; + /// + /// 标记数据层 + /// + public const int MarkLayer = 10; /// /// 所属地图编辑器UI diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMark.cs b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMark.cs index 4cafa08..01e1153 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMark.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMark.cs @@ -44,6 +44,19 @@ } private NumberBar _L_NumberBar; + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.ObjectBar + /// + public ObjectBar L_ObjectBar + { + get + { + if (_L_ObjectBar == null) _L_ObjectBar = new ObjectBar((MapEditorCreateMarkPanel)this, GetNodeOrNull("ObjectBar")); + return _L_ObjectBar; + } + } + private ObjectBar _L_ObjectBar; + public MapEditorCreateMark() : base(nameof(MapEditorCreateMark)) { @@ -52,6 +65,7 @@ public sealed override void OnInitNestedUi() { _ = L_NumberBar; + _ = L_ObjectBar; } @@ -426,7 +440,60 @@ } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.HBoxContainer.DelayNameLabel + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.VBoxContainer.PreloadingContainer.PreloadingNameLabel + /// + public class PreloadingNameLabel : UiNode + { + public PreloadingNameLabel(MapEditorCreateMarkPanel uiPanel, Godot.Label node) : base(uiPanel, node) { } + public override PreloadingNameLabel Clone() => new (UiPanel, (Godot.Label)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.VBoxContainer.PreloadingContainer.PreloadingCheck + /// + public class PreloadingCheck : UiNode + { + public PreloadingCheck(MapEditorCreateMarkPanel uiPanel, Godot.CheckBox node) : base(uiPanel, node) { } + public override PreloadingCheck Clone() => new (UiPanel, (Godot.CheckBox)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.VBoxContainer.PreloadingContainer + /// + public class PreloadingContainer : UiNode + { + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.VBoxContainer.PreloadingNameLabel + /// + public PreloadingNameLabel L_PreloadingNameLabel + { + get + { + if (_L_PreloadingNameLabel == null) _L_PreloadingNameLabel = new PreloadingNameLabel(UiPanel, Instance.GetNodeOrNull("PreloadingNameLabel")); + return _L_PreloadingNameLabel; + } + } + private PreloadingNameLabel _L_PreloadingNameLabel; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.VBoxContainer.PreloadingCheck + /// + public PreloadingCheck L_PreloadingCheck + { + get + { + if (_L_PreloadingCheck == null) _L_PreloadingCheck = new PreloadingCheck(UiPanel, Instance.GetNodeOrNull("PreloadingCheck")); + return _L_PreloadingCheck; + } + } + private PreloadingCheck _L_PreloadingCheck; + + public PreloadingContainer(MapEditorCreateMarkPanel uiPanel, Godot.HBoxContainer node) : base(uiPanel, node) { } + public override PreloadingContainer Clone() => new (UiPanel, (Godot.HBoxContainer)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.VBoxContainer.DelayContainer.DelayNameLabel /// public class DelayNameLabel : UiNode { @@ -435,7 +502,7 @@ } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.HBoxContainer.DelayInput + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.VBoxContainer.DelayContainer.DelayInput /// public class DelayInput : UiNode { @@ -444,12 +511,12 @@ } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.HBoxContainer + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.VBoxContainer.DelayContainer /// - public class HBoxContainer_2 : UiNode + public class DelayContainer : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.DelayNameLabel + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.VBoxContainer.DelayNameLabel /// public DelayNameLabel L_DelayNameLabel { @@ -462,7 +529,7 @@ private DelayNameLabel _L_DelayNameLabel; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.DelayInput + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.VBoxContainer.DelayInput /// public DelayInput L_DelayInput { @@ -474,8 +541,43 @@ } private DelayInput _L_DelayInput; - public HBoxContainer_2(MapEditorCreateMarkPanel uiPanel, Godot.HBoxContainer node) : base(uiPanel, node) { } - public override HBoxContainer_2 Clone() => new (UiPanel, (Godot.HBoxContainer)Instance.Duplicate()); + public DelayContainer(MapEditorCreateMarkPanel uiPanel, Godot.HBoxContainer node) : base(uiPanel, node) { } + public override DelayContainer Clone() => new (UiPanel, (Godot.HBoxContainer)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.VBoxContainer + /// + public class VBoxContainer_3 : UiNode + { + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.PreloadingContainer + /// + public PreloadingContainer L_PreloadingContainer + { + get + { + if (_L_PreloadingContainer == null) _L_PreloadingContainer = new PreloadingContainer(UiPanel, Instance.GetNodeOrNull("PreloadingContainer")); + return _L_PreloadingContainer; + } + } + private PreloadingContainer _L_PreloadingContainer; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.DelayContainer + /// + public DelayContainer L_DelayContainer + { + get + { + if (_L_DelayContainer == null) _L_DelayContainer = new DelayContainer(UiPanel, Instance.GetNodeOrNull("DelayContainer")); + return _L_DelayContainer; + } + } + private DelayContainer _L_DelayContainer; + + public VBoxContainer_3(MapEditorCreateMarkPanel uiPanel, Godot.VBoxContainer node) : base(uiPanel, node) { } + public override VBoxContainer_3 Clone() => new (UiPanel, (Godot.VBoxContainer)Instance.Duplicate()); } /// @@ -510,17 +612,17 @@ private HBoxContainer3_1 _L_HBoxContainer3; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.VBoxContainer /// - public HBoxContainer_2 L_HBoxContainer + public VBoxContainer_3 L_VBoxContainer { get { - if (_L_HBoxContainer == null) _L_HBoxContainer = new HBoxContainer_2(UiPanel, Instance.GetNodeOrNull("HBoxContainer")); - return _L_HBoxContainer; + if (_L_VBoxContainer == null) _L_VBoxContainer = new VBoxContainer_3(UiPanel, Instance.GetNodeOrNull("VBoxContainer")); + return _L_VBoxContainer; } } - private HBoxContainer_2 _L_HBoxContainer; + private VBoxContainer_3 _L_VBoxContainer; public HBoxContainer3(MapEditorCreateMarkPanel uiPanel, Godot.HBoxContainer node) : base(uiPanel, node) { } public override HBoxContainer3 Clone() => new (UiPanel, (Godot.HBoxContainer)Instance.Duplicate()); @@ -601,7 +703,7 @@ /// /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.HBoxContainer /// - public class HBoxContainer_3 : UiNode + public class HBoxContainer_2 : UiNode { /// /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.Control @@ -694,12 +796,12 @@ } private ExtraTitle _L_ExtraTitle; - public HBoxContainer_3(MapEditorCreateMarkPanel uiPanel, Godot.HBoxContainer node) : base(uiPanel, node) { } - public override HBoxContainer_3 Clone() => new (UiPanel, (Godot.HBoxContainer)Instance.Duplicate()); + public HBoxContainer_2(MapEditorCreateMarkPanel uiPanel, Godot.HBoxContainer node) : base(uiPanel, node) { } + public override HBoxContainer_2 Clone() => new (UiPanel, (Godot.HBoxContainer)Instance.Duplicate()); } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.HBoxContainer.ExpandButton + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.HBoxContainer.ExpandButton /// public class ExpandButton : UiNode { @@ -708,7 +810,7 @@ } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.HBoxContainer.Icon + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.HBoxContainer.Icon /// public class Icon : UiNode { @@ -717,7 +819,7 @@ } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.HBoxContainer.IdLabel + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.HBoxContainer.IdLabel /// public class IdLabel : UiNode { @@ -726,7 +828,7 @@ } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.HBoxContainer.NameLabel + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.HBoxContainer.NameLabel /// public class NameLabel : UiNode { @@ -735,7 +837,7 @@ } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.HBoxContainer.TypeLabel + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.HBoxContainer.TypeLabel /// public class TypeLabel : UiNode { @@ -744,7 +846,7 @@ } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.HBoxContainer.LineEdit + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.HBoxContainer.LineEdit /// public class LineEdit : UiNode { @@ -753,7 +855,7 @@ } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.HBoxContainer.CenterContainer.DeleteButton + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.HBoxContainer.CenterContainer.DeleteButton /// public class DeleteButton : UiNode { @@ -762,12 +864,12 @@ } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.HBoxContainer.CenterContainer + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.HBoxContainer.CenterContainer /// public class CenterContainer : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.HBoxContainer.DeleteButton + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.HBoxContainer.DeleteButton /// public DeleteButton L_DeleteButton { @@ -784,12 +886,12 @@ } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.HBoxContainer + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.HBoxContainer /// - public class HBoxContainer_4 : UiNode + public class HBoxContainer_3 : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.ExpandButton + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.ExpandButton /// public ExpandButton L_ExpandButton { @@ -802,7 +904,7 @@ private ExpandButton _L_ExpandButton; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.Icon + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.Icon /// public Icon L_Icon { @@ -815,7 +917,7 @@ private Icon _L_Icon; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.IdLabel + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.IdLabel /// public IdLabel L_IdLabel { @@ -828,7 +930,7 @@ private IdLabel _L_IdLabel; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.NameLabel + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.NameLabel /// public NameLabel L_NameLabel { @@ -841,7 +943,7 @@ private NameLabel _L_NameLabel; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.TypeLabel + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.TypeLabel /// public TypeLabel L_TypeLabel { @@ -854,7 +956,7 @@ private TypeLabel _L_TypeLabel; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.LineEdit + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.LineEdit /// public LineEdit L_LineEdit { @@ -867,7 +969,7 @@ private LineEdit _L_LineEdit; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.CenterContainer + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.CenterContainer /// public CenterContainer L_CenterContainer { @@ -879,30 +981,52 @@ } private CenterContainer _L_CenterContainer; - public HBoxContainer_4(MapEditorCreateMarkPanel uiPanel, Godot.HBoxContainer node) : base(uiPanel, node) { } - public override HBoxContainer_4 Clone() => new (UiPanel, (Godot.HBoxContainer)Instance.Duplicate()); + public HBoxContainer_3(MapEditorCreateMarkPanel uiPanel, Godot.HBoxContainer node) : base(uiPanel, node) { } + public override HBoxContainer_3 Clone() => new (UiPanel, (Godot.HBoxContainer)Instance.Duplicate()); } /// - /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer /// - public class MarkObject : UiNode + public class VBoxContainer_5 : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.HBoxContainer + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.HBoxContainer /// - public HBoxContainer_4 L_HBoxContainer + public HBoxContainer_3 L_HBoxContainer { get { - if (_L_HBoxContainer == null) _L_HBoxContainer = new HBoxContainer_4(UiPanel, Instance.GetNodeOrNull("HBoxContainer")); + if (_L_HBoxContainer == null) _L_HBoxContainer = new HBoxContainer_3(UiPanel, Instance.GetNodeOrNull("HBoxContainer")); return _L_HBoxContainer; } } - private HBoxContainer_4 _L_HBoxContainer; + private HBoxContainer_3 _L_HBoxContainer; - public MarkObject(MapEditorCreateMarkPanel uiPanel, Godot.VBoxContainer node) : base(uiPanel, node) { } - public override MarkObject Clone() => new (UiPanel, (Godot.VBoxContainer)Instance.Duplicate()); + public VBoxContainer_5(MapEditorCreateMarkPanel uiPanel, Godot.VBoxContainer node) : base(uiPanel, node) { } + public override VBoxContainer_5 Clone() => new (UiPanel, (Godot.VBoxContainer)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject + /// + public class MarkObject : UiNode + { + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.VBoxContainer + /// + public VBoxContainer_5 L_VBoxContainer + { + get + { + if (_L_VBoxContainer == null) _L_VBoxContainer = new VBoxContainer_5(UiPanel, Instance.GetNodeOrNull("VBoxContainer")); + return _L_VBoxContainer; + } + } + private VBoxContainer_5 _L_VBoxContainer; + + public MarkObject(MapEditorCreateMarkPanel uiPanel, Godot.PanelContainer node) : base(uiPanel, node) { } + public override MarkObject Clone() => new (UiPanel, (Godot.PanelContainer)Instance.Duplicate()); } /// @@ -911,13 +1035,13 @@ public class ScrollContainer : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.MarkObject + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.MarkObject /// public MarkObject L_MarkObject { get { - if (_L_MarkObject == null) _L_MarkObject = new MarkObject(UiPanel, Instance.GetNodeOrNull("MarkObject")); + if (_L_MarkObject == null) _L_MarkObject = new MarkObject(UiPanel, Instance.GetNodeOrNull("MarkObject")); return _L_MarkObject; } } @@ -930,20 +1054,20 @@ /// /// 类型: , 路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer /// - public class VBoxContainer_3 : UiNode + public class VBoxContainer_4 : UiNode { /// /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.HBoxContainer /// - public HBoxContainer_3 L_HBoxContainer + public HBoxContainer_2 L_HBoxContainer { get { - if (_L_HBoxContainer == null) _L_HBoxContainer = new HBoxContainer_3(UiPanel, Instance.GetNodeOrNull("HBoxContainer")); + if (_L_HBoxContainer == null) _L_HBoxContainer = new HBoxContainer_2(UiPanel, Instance.GetNodeOrNull("HBoxContainer")); return _L_HBoxContainer; } } - private HBoxContainer_3 _L_HBoxContainer; + private HBoxContainer_2 _L_HBoxContainer; /// /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.ScrollContainer @@ -958,8 +1082,8 @@ } private ScrollContainer _L_ScrollContainer; - public VBoxContainer_3(MapEditorCreateMarkPanel uiPanel, Godot.VBoxContainer node) : base(uiPanel, node) { } - public override VBoxContainer_3 Clone() => new (UiPanel, (Godot.VBoxContainer)Instance.Duplicate()); + public VBoxContainer_4(MapEditorCreateMarkPanel uiPanel, Godot.VBoxContainer node) : base(uiPanel, node) { } + public override VBoxContainer_4 Clone() => new (UiPanel, (Godot.VBoxContainer)Instance.Duplicate()); } /// @@ -970,15 +1094,15 @@ /// /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.VBoxContainer /// - public VBoxContainer_3 L_VBoxContainer + public VBoxContainer_4 L_VBoxContainer { get { - if (_L_VBoxContainer == null) _L_VBoxContainer = new VBoxContainer_3(UiPanel, Instance.GetNodeOrNull("VBoxContainer")); + if (_L_VBoxContainer == null) _L_VBoxContainer = new VBoxContainer_4(UiPanel, Instance.GetNodeOrNull("VBoxContainer")); return _L_VBoxContainer; } } - private VBoxContainer_3 _L_VBoxContainer; + private VBoxContainer_4 _L_VBoxContainer; public Panel(MapEditorCreateMarkPanel uiPanel, Godot.Panel node) : base(uiPanel, node) { } public override Panel Clone() => new (UiPanel, (Godot.Panel)Instance.Duplicate()); @@ -1138,6 +1262,147 @@ public override NumberBar Clone() => new (UiPanel, (UI.MapEditorCreateMark.NumberAttribute)Instance.Duplicate()); } + /// + /// 类型: , 路径: MapEditorCreateMark.ObjectBar.AttrName + /// + public class AttrName_1 : UiNode + { + public AttrName_1(MapEditorCreateMarkPanel uiPanel, Godot.Label node) : base(uiPanel, node) { } + public override AttrName_1 Clone() => new (UiPanel, (Godot.Label)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.ObjectBar.HBoxContainer.SelectButton + /// + public class SelectButton : UiNode + { + public SelectButton(MapEditorCreateMarkPanel uiPanel, Godot.Button node) : base(uiPanel, node) { } + public override SelectButton Clone() => new (UiPanel, (Godot.Button)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.ObjectBar.HBoxContainer.ObjectIcon + /// + public class ObjectIcon : UiNode + { + public ObjectIcon(MapEditorCreateMarkPanel uiPanel, Godot.TextureRect node) : base(uiPanel, node) { } + public override ObjectIcon Clone() => new (UiPanel, (Godot.TextureRect)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.ObjectBar.HBoxContainer.ObjectName + /// + public class ObjectName : UiNode + { + public ObjectName(MapEditorCreateMarkPanel uiPanel, Godot.Label node) : base(uiPanel, node) { } + public override ObjectName Clone() => new (UiPanel, (Godot.Label)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.ObjectBar.HBoxContainer.DeleteButton + /// + public class DeleteButton_1 : UiNode + { + public DeleteButton_1(MapEditorCreateMarkPanel uiPanel, Godot.Button node) : base(uiPanel, node) { } + public override DeleteButton_1 Clone() => new (UiPanel, (Godot.Button)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.ObjectBar.HBoxContainer + /// + public class HBoxContainer_4 : UiNode + { + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.ObjectBar.SelectButton + /// + public SelectButton L_SelectButton + { + get + { + if (_L_SelectButton == null) _L_SelectButton = new SelectButton(UiPanel, Instance.GetNodeOrNull("SelectButton")); + return _L_SelectButton; + } + } + private SelectButton _L_SelectButton; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.ObjectBar.ObjectIcon + /// + public ObjectIcon L_ObjectIcon + { + get + { + if (_L_ObjectIcon == null) _L_ObjectIcon = new ObjectIcon(UiPanel, Instance.GetNodeOrNull("ObjectIcon")); + return _L_ObjectIcon; + } + } + private ObjectIcon _L_ObjectIcon; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.ObjectBar.ObjectName + /// + public ObjectName L_ObjectName + { + get + { + if (_L_ObjectName == null) _L_ObjectName = new ObjectName(UiPanel, Instance.GetNodeOrNull("ObjectName")); + return _L_ObjectName; + } + } + private ObjectName _L_ObjectName; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.ObjectBar.DeleteButton + /// + public DeleteButton_1 L_DeleteButton + { + get + { + if (_L_DeleteButton == null) _L_DeleteButton = new DeleteButton_1(UiPanel, Instance.GetNodeOrNull("DeleteButton")); + return _L_DeleteButton; + } + } + private DeleteButton_1 _L_DeleteButton; + + public HBoxContainer_4(MapEditorCreateMarkPanel uiPanel, Godot.HBoxContainer node) : base(uiPanel, node) { } + public override HBoxContainer_4 Clone() => new (UiPanel, (Godot.HBoxContainer)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: MapEditorCreateMark.ObjectBar + /// + public class ObjectBar : UiNode + { + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.AttrName + /// + public AttrName_1 L_AttrName + { + get + { + if (_L_AttrName == null) _L_AttrName = new AttrName_1(UiPanel, Instance.GetNodeOrNull("AttrName")); + return _L_AttrName; + } + } + private AttrName_1 _L_AttrName; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorCreateMark.HBoxContainer + /// + public HBoxContainer_4 L_HBoxContainer + { + get + { + if (_L_HBoxContainer == null) _L_HBoxContainer = new HBoxContainer_4(UiPanel, Instance.GetNodeOrNull("HBoxContainer")); + return _L_HBoxContainer; + } + } + private HBoxContainer_4 _L_HBoxContainer; + + public ObjectBar(MapEditorCreateMarkPanel uiPanel, UI.MapEditorCreateMark.ObjectAttribute node) : base(uiPanel, node) { } + public override ObjectBar Clone() => new (UiPanel, (UI.MapEditorCreateMark.ObjectAttribute)Instance.Duplicate()); + } + /// /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.HBoxContainer2.PosLabel @@ -1170,14 +1435,34 @@ public SizeY S_SizeY => L_MarginContainer.L_VBoxContainer.L_HBoxContainer3.L_HBoxContainer3.L_VBoxContainer.L_HBoxContainer2.L_SizeY; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.HBoxContainer.DelayNameLabel + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.VBoxContainer.PreloadingContainer.PreloadingNameLabel /// - public DelayNameLabel S_DelayNameLabel => L_MarginContainer.L_VBoxContainer.L_HBoxContainer3.L_HBoxContainer.L_DelayNameLabel; + public PreloadingNameLabel S_PreloadingNameLabel => L_MarginContainer.L_VBoxContainer.L_HBoxContainer3.L_VBoxContainer.L_PreloadingContainer.L_PreloadingNameLabel; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.HBoxContainer.DelayInput + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.VBoxContainer.PreloadingContainer.PreloadingCheck /// - public DelayInput S_DelayInput => L_MarginContainer.L_VBoxContainer.L_HBoxContainer3.L_HBoxContainer.L_DelayInput; + public PreloadingCheck S_PreloadingCheck => L_MarginContainer.L_VBoxContainer.L_HBoxContainer3.L_VBoxContainer.L_PreloadingContainer.L_PreloadingCheck; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.VBoxContainer.PreloadingContainer + /// + public PreloadingContainer S_PreloadingContainer => L_MarginContainer.L_VBoxContainer.L_HBoxContainer3.L_VBoxContainer.L_PreloadingContainer; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.VBoxContainer.DelayContainer.DelayNameLabel + /// + public DelayNameLabel S_DelayNameLabel => L_MarginContainer.L_VBoxContainer.L_HBoxContainer3.L_VBoxContainer.L_DelayContainer.L_DelayNameLabel; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.VBoxContainer.DelayContainer.DelayInput + /// + public DelayInput S_DelayInput => L_MarginContainer.L_VBoxContainer.L_HBoxContainer3.L_VBoxContainer.L_DelayContainer.L_DelayInput; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.HBoxContainer3.VBoxContainer.DelayContainer + /// + public DelayContainer S_DelayContainer => L_MarginContainer.L_VBoxContainer.L_HBoxContainer3.L_VBoxContainer.L_DelayContainer; /// /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.AddMark @@ -1220,47 +1505,42 @@ public ExtraTitle S_ExtraTitle => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_HBoxContainer.L_ExtraTitle; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.HBoxContainer.ExpandButton + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.HBoxContainer.ExpandButton /// - public ExpandButton S_ExpandButton => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_HBoxContainer.L_ExpandButton; + public ExpandButton S_ExpandButton => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_VBoxContainer.L_HBoxContainer.L_ExpandButton; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.HBoxContainer.Icon + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.HBoxContainer.Icon /// - public Icon S_Icon => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_HBoxContainer.L_Icon; + public Icon S_Icon => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_VBoxContainer.L_HBoxContainer.L_Icon; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.HBoxContainer.IdLabel + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.HBoxContainer.IdLabel /// - public IdLabel S_IdLabel => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_HBoxContainer.L_IdLabel; + public IdLabel S_IdLabel => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_VBoxContainer.L_HBoxContainer.L_IdLabel; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.HBoxContainer.NameLabel + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.HBoxContainer.NameLabel /// - public NameLabel S_NameLabel => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_HBoxContainer.L_NameLabel; + public NameLabel S_NameLabel => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_VBoxContainer.L_HBoxContainer.L_NameLabel; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.HBoxContainer.TypeLabel + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.HBoxContainer.TypeLabel /// - public TypeLabel S_TypeLabel => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_HBoxContainer.L_TypeLabel; + public TypeLabel S_TypeLabel => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_VBoxContainer.L_HBoxContainer.L_TypeLabel; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.HBoxContainer.LineEdit + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.HBoxContainer.LineEdit /// - public LineEdit S_LineEdit => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_HBoxContainer.L_LineEdit; + public LineEdit S_LineEdit => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_VBoxContainer.L_HBoxContainer.L_LineEdit; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.HBoxContainer.CenterContainer.DeleteButton + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.VBoxContainer.HBoxContainer.CenterContainer /// - public DeleteButton S_DeleteButton => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_HBoxContainer.L_CenterContainer.L_DeleteButton; + public CenterContainer S_CenterContainer => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_VBoxContainer.L_HBoxContainer.L_CenterContainer; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject.HBoxContainer.CenterContainer - /// - public CenterContainer S_CenterContainer => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject.L_HBoxContainer.L_CenterContainer; - - /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.MarginContainer.VBoxContainer.Panel.VBoxContainer.ScrollContainer.MarkObject /// public MarkObject S_MarkObject => L_MarginContainer.L_VBoxContainer.L_Panel.L_VBoxContainer.L_ScrollContainer.L_MarkObject; @@ -1290,11 +1570,6 @@ public ExpandPanel S_ExpandPanel => L_ExpandPanel; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.NumberBar.AttrName - /// - public AttrName S_AttrName => L_NumberBar.L_AttrName; - - /// /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.NumberBar.NumInput /// public NumInput S_NumInput => L_NumberBar.L_NumInput; @@ -1304,4 +1579,24 @@ /// public NumberBar S_NumberBar => L_NumberBar; + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.ObjectBar.HBoxContainer.SelectButton + /// + public SelectButton S_SelectButton => L_ObjectBar.L_HBoxContainer.L_SelectButton; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.ObjectBar.HBoxContainer.ObjectIcon + /// + public ObjectIcon S_ObjectIcon => L_ObjectBar.L_HBoxContainer.L_ObjectIcon; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.ObjectBar.HBoxContainer.ObjectName + /// + public ObjectName S_ObjectName => L_ObjectBar.L_HBoxContainer.L_ObjectName; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorCreateMark.ObjectBar + /// + public ObjectBar S_ObjectBar => L_ObjectBar; + } diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMarkPanel.cs b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMarkPanel.cs index a01628d..6a62b84 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMarkPanel.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MapEditorCreateMarkPanel.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using Config; using Godot; +using UI.MapEditor; namespace UI.MapEditorCreateMark; @@ -14,13 +15,17 @@ //隐藏模板对象 S_ExpandPanel.Instance.Visible = false; S_NumberBar.Instance.Visible = false; + S_ObjectBar.Instance.Visible = false; + //添加标记按钮 S_AddMark.Instance.Pressed += OnAddMark; + //提前加载按钮 + S_PreloadingCheck.Instance.Pressed += OnPreloadingCheck; _grid = new UiGrid(S_MarkObject, typeof(MarkObjectCell)); _grid.SetColumns(1); _grid.SetHorizontalExpand(true); - _grid.SetCellOffset(new Vector2I(0, 5)); + _grid.SetCellOffset(new Vector2I(0, 8)); } @@ -39,7 +44,9 @@ S_PosX.Instance.Value = data.Position.X; S_PosY.Instance.Value = data.Position.Y; S_DelayInput.Instance.Value = data.DelayTime; + S_PreloadingCheck.Instance.ButtonPressed = data.Preloading; _grid.SetDataList(data.MarkList.ToArray()); + OnPreloadingCheck(); } /// @@ -56,10 +63,19 @@ var data = new MarkInfo(); data.Position = new SerializeVector2(); data.MarkList = new List(); - data.DelayTime = (float)S_DelayInput.Instance.Value; + data.Preloading = S_PreloadingCheck.Instance.ButtonPressed; + if (!data.Preloading) + { + data.DelayTime = (float)S_DelayInput.Instance.Value; + } + else + { + data.DelayTime = 0; + } data.Position = new SerializeVector2((float)S_PosX.Instance.Value, (float)S_PosY.Instance.Value); data.Size = new SerializeVector2((float)S_SizeX.Instance.Value, (float)S_SizeY.Instance.Value); + //标记物体数据 var gridCount = _grid.Count; for (var i = 0; i < gridCount; i++) { @@ -75,7 +91,7 @@ /// 创建数值属性数据 /// /// 属性字符串名称 - /// 属性名称 + /// 属性显示名称 public NumberBar CreateNumberBar(string attrName, string attrLabel) { var numberBar = S_NumberBar.Clone(); @@ -85,10 +101,26 @@ return numberBar; } + /// + /// 创选择物体属性数据 + /// + /// 属性字符串名称 + /// 属性显示名称 + /// 可选择的物体类型 + public ObjectBar CreateObjectBar(string attrName, string attrLabel, ActivityType activityType) + { + var objectBar = S_ObjectBar.Clone(); + objectBar.Instance.AttrName = attrName; + objectBar.Instance.ActivityType = activityType; + objectBar.L_AttrName.Instance.Text = attrLabel; + objectBar.Instance.Visible = true; + return objectBar; + } + //点击添加标记按钮 private void OnAddMark() { - EditorWindowManager.ShowSelectObject(OnSelectObject, this); + EditorWindowManager.ShowSelectObject(ActivityType.None, OnSelectObject, this); } //选中物体回调 @@ -100,4 +132,18 @@ Weight = 100 }); } + + //点击提前加载 + private void OnPreloadingCheck() + { + var buttonPressed = S_PreloadingCheck.Instance.ButtonPressed; + if (buttonPressed) //启用提前加载 + { + S_DelayContainer.Instance.Visible = false; + } + else //禁用提前加载 + { + S_DelayContainer.Instance.Visible = true; + } + } } diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MarkObjectCell.cs b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MarkObjectCell.cs index 9356f59..0848e3d 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MarkObjectCell.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/MarkObjectCell.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; using Config; namespace UI.MapEditorCreateMark; @@ -10,13 +9,13 @@ //是否展开 private bool _isExpand = false; private MapEditorCreateMark.ExpandPanel _expandPanel; - private List _attributeBases; + private List _attributeBases; private ExcelConfig.ActivityObject _activityObject; public override void OnInit() { - CellNode.L_HBoxContainer.L_ExpandButton.Instance.Pressed += OnExpandClick; - CellNode.L_HBoxContainer.L_CenterContainer.L_DeleteButton.Instance.Pressed += OnDeleteClick; + CellNode.L_VBoxContainer.L_HBoxContainer.L_ExpandButton.Instance.Pressed += OnExpandClick; + CellNode.L_VBoxContainer.L_HBoxContainer.L_CenterContainer.L_DeleteButton.Instance.Pressed += OnDeleteClick; } public override void OnSetData(MarkInfoItem data) @@ -27,19 +26,19 @@ _activityObject = ExcelConfig.ActivityObject_Map[data.Id]; if (string.IsNullOrEmpty(_activityObject.Icon)) { - CellNode.L_HBoxContainer.L_Icon.Instance.Visible = false; + CellNode.L_VBoxContainer.L_HBoxContainer.L_Icon.Instance.Visible = false; } else { - CellNode.L_HBoxContainer.L_Icon.Instance.Visible = true; - CellNode.L_HBoxContainer.L_Icon.Instance.Texture = ResourceManager.LoadTexture2D(_activityObject.Icon); + CellNode.L_VBoxContainer.L_HBoxContainer.L_Icon.Instance.Visible = true; + CellNode.L_VBoxContainer.L_HBoxContainer.L_Icon.Instance.Texture = ResourceManager.LoadTexture2D(_activityObject.Icon); } //物体Id - CellNode.L_HBoxContainer.L_IdLabel.Instance.Text = data.Id; + CellNode.L_VBoxContainer.L_HBoxContainer.L_IdLabel.Instance.Text = data.Id; //物体名称 - CellNode.L_HBoxContainer.L_NameLabel.Instance.Text = _activityObject.Name; + CellNode.L_VBoxContainer.L_HBoxContainer.L_NameLabel.Instance.Text = _activityObject.Name; //物体类型 - CellNode.L_HBoxContainer.L_TypeLabel.Instance.Text = NameManager.GetActivityTypeName(_activityObject.Type); + CellNode.L_VBoxContainer.L_HBoxContainer.L_TypeLabel.Instance.Text = NameManager.GetActivityTypeName(_activityObject.Type); // 包含额外属性 if (_activityObject.Type == 5 || _activityObject.Type == 4) @@ -75,7 +74,10 @@ markInfoItem.Attr = new Dictionary(); foreach (var attributeBase in _attributeBases) { - markInfoItem.Attr.Add(attributeBase.Instance.AttrName, attributeBase.Instance.GetAttributeValue()); + if (attributeBase.Visible) + { + markInfoItem.Attr.Add(attributeBase.AttrName, attributeBase.GetAttributeValue()); + } } } return markInfoItem; @@ -100,12 +102,12 @@ _isExpand = flag; if (_isExpand) { - CellNode.L_HBoxContainer.L_ExpandButton.Instance.Icon = + CellNode.L_VBoxContainer.L_HBoxContainer.L_ExpandButton.Instance.Icon = ResourceManager.LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_Down_png); } else { - CellNode.L_HBoxContainer.L_ExpandButton.Instance.Icon = + CellNode.L_VBoxContainer.L_HBoxContainer.L_ExpandButton.Instance.Icon = ResourceManager.LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_Right_png); } @@ -124,7 +126,7 @@ _expandPanel = CellNode.UiPanel.S_ExpandPanel.Clone(); _expandPanel.Instance.Visible = _isExpand; - CellNode.AddChild(_expandPanel); + CellNode.L_VBoxContainer.AddChild(_expandPanel); if (activityObject.Type == 5) //武器类型 { @@ -132,9 +134,9 @@ var numberBar2 = CellNode.UiPanel.CreateNumberBar("ResidueAmmo", "剩余弹药量:"); _expandPanel.L_ExpandGrid.AddChild(numberBar); _expandPanel.L_ExpandGrid.AddChild(numberBar2); - _attributeBases = new List(); - _attributeBases.Add(numberBar); - _attributeBases.Add(numberBar2); + _attributeBases = new List(); + _attributeBases.Add(numberBar.Instance); + _attributeBases.Add(numberBar2.Instance); if (markInfoItem != null) //初始化数据 { @@ -168,16 +170,17 @@ } else if (activityObject.Type == 4) //敌人 { - var numberBar = CellNode.UiPanel.CreateNumberBar("Weapon", "携带武器:"); + var weaponBar = CellNode.UiPanel.CreateObjectBar("Weapon", "携带武器:", ActivityType.Weapon); var numberBar2 = CellNode.UiPanel.CreateNumberBar("CurrAmmon", "弹夹弹药量:"); var numberBar3 = CellNode.UiPanel.CreateNumberBar("ResidueAmmo", "剩余弹药量:"); - _expandPanel.L_ExpandGrid.AddChild(numberBar); + weaponBar.Instance.SetRelevancyAttr(numberBar2, numberBar3); + _expandPanel.L_ExpandGrid.AddChild(weaponBar); _expandPanel.L_ExpandGrid.AddChild(numberBar2); _expandPanel.L_ExpandGrid.AddChild(numberBar3); - _attributeBases = new List(); - _attributeBases.Add(numberBar); - _attributeBases.Add(numberBar2); - _attributeBases.Add(numberBar3); + _attributeBases = new List(); + _attributeBases.Add(weaponBar.Instance); + _attributeBases.Add(numberBar2.Instance); + _attributeBases.Add(numberBar3.Instance); if (markInfoItem != null) //初始化数据 { @@ -193,6 +196,10 @@ if (markInfoItem.Attr != null) { + if (markInfoItem.Attr.TryGetValue("Weapon", out var weaponId)) //武器 + { + weaponBar.Instance.SelectWeapon(ExcelConfig.Weapon_List.Find(w => w.WeaponId == weaponId)); + } if (markInfoItem.Attr.TryGetValue("CurrAmmon", out var currAmmon)) //弹夹弹药量 { numberBar2.L_NumInput.Instance.Value = float.Parse(currAmmon); diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/attribute/AttributeBase.cs b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/attribute/AttributeBase.cs index cc47cd2..e84e69c 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/attribute/AttributeBase.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/attribute/AttributeBase.cs @@ -2,7 +2,7 @@ namespace UI.MapEditorCreateMark; -public abstract partial class AttributeBase : HBoxContainer, IUiNodeScript +public abstract partial class AttributeBase : Control, IUiNodeScript { /// /// 属性名称 @@ -10,11 +10,6 @@ public string AttrName { get; set; } public abstract void SetUiNode(IUiNode uiNode); - - /// - /// 设置属性显示名称 - /// - public abstract void SetAttributeLabel(string text); /// /// 获取属性值 diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/attribute/NumberAttribute.cs b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/attribute/NumberAttribute.cs index 9f8f366..6f0671f 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/attribute/NumberAttribute.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/attribute/NumberAttribute.cs @@ -5,20 +5,15 @@ public partial class NumberAttribute : AttributeBase { - private MapEditorCreateMark.NumberBar NumberBar; + private MapEditorCreateMark.NumberBar _numberBar; public override void SetUiNode(IUiNode uiNode) { - NumberBar = (MapEditorCreateMark.NumberBar)uiNode; + _numberBar = (MapEditorCreateMark.NumberBar)uiNode; } - - public override void SetAttributeLabel(string text) - { - NumberBar.L_AttrName.Instance.Text = text; - } - + public override string GetAttributeValue() { - return NumberBar.L_NumInput.Instance.Value.ToString(CultureInfo.InvariantCulture); + return _numberBar.L_NumInput.Instance.Value.ToString(CultureInfo.InvariantCulture); } } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/attribute/ObjectAttribute.cs b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/attribute/ObjectAttribute.cs new file mode 100644 index 0000000..c2ac3ab --- /dev/null +++ b/DungeonShooting_Godot/src/game/ui/mapEditorCreateMark/attribute/ObjectAttribute.cs @@ -0,0 +1,98 @@ +using Config; + +namespace UI.MapEditorCreateMark; + +public partial class ObjectAttribute : AttributeBase +{ + /// + /// 可选择的物体类型 + /// + public ActivityType ActivityType { get; set; } + private MapEditorCreateMark.ObjectBar _objectBar; + //选择的武器数据 + private ExcelConfig.Weapon _selectWeapon; + //关联属性 + private MapEditorCreateMark.NumberBar _currAmmonAttr; + private MapEditorCreateMark.NumberBar _residueAmmoAttr; + + public override void SetUiNode(IUiNode uiNode) + { + _objectBar = (MapEditorCreateMark.ObjectBar)uiNode; + _objectBar.L_HBoxContainer.L_SelectButton.Instance.Pressed += OnClickEdit; + _objectBar.L_HBoxContainer.L_DeleteButton.Instance.Pressed += OnClickDelete; + } + + public override string GetAttributeValue() + { + if (_selectWeapon == null) + { + return null; + } + return _selectWeapon.Id; + } + + //点击编辑按钮 + private void OnClickEdit() + { + EditorWindowManager.ShowSelectObject(ActivityType.Weapon, OnSelectObject, _objectBar.UiPanel); + } + + //点击删除按钮 + private void OnClickDelete() + { + SelectWeapon(null); + } + + private void OnSelectObject(ExcelConfig.ActivityObject activityObject) + { + var weapon = ExcelConfig.Weapon_List.Find(weapon => weapon.WeaponId == activityObject.Id); + if (weapon != null) + { + SelectWeapon(weapon); + } + } + + /// + /// 设置选择的武器物体 + /// + public void SelectWeapon(ExcelConfig.Weapon weapon) + { + if (weapon == null) + { + _objectBar.L_HBoxContainer.L_DeleteButton.Instance.Visible = false; + _selectWeapon = null; + //隐藏关联属性 + _currAmmonAttr.Instance.Visible = false; + _residueAmmoAttr.Instance.Visible = false; + _objectBar.L_HBoxContainer.L_ObjectIcon.Instance.Visible = false; + _objectBar.L_HBoxContainer.L_ObjectName.Instance.Text = "<未选择>"; + } + else + { + _objectBar.L_HBoxContainer.L_DeleteButton.Instance.Visible = true; + _selectWeapon = weapon; + var o = ExcelConfig.ActivityObject_Map[weapon.WeaponId]; + //显示关联属性 + _currAmmonAttr.Instance.Visible = true; + _residueAmmoAttr.Instance.Visible = true; + //显示数据 + _objectBar.L_HBoxContainer.L_ObjectName.Instance.Text = o.Name; + _objectBar.L_HBoxContainer.L_ObjectIcon.Instance.Visible = true; + _objectBar.L_HBoxContainer.L_ObjectIcon.Instance.Texture = ResourceManager.LoadTexture2D(o.Icon); + //弹药 + _currAmmonAttr.L_NumInput.Instance.MaxValue = weapon.AmmoCapacity; + _residueAmmoAttr.L_NumInput.Instance.MaxValue = weapon.MaxAmmoCapacity; + } + } + + /// + /// 设置关联的属性 + /// + public void SetRelevancyAttr(MapEditorCreateMark.NumberBar currAmmonAttr, MapEditorCreateMark.NumberBar residueAmmoAttr) + { + _currAmmonAttr = currAmmonAttr; + _residueAmmoAttr = residueAmmoAttr; + currAmmonAttr.Instance.Visible = false; + residueAmmoAttr.Instance.Visible = false; + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorMapLayer/LayerButtonCell.cs b/DungeonShooting_Godot/src/game/ui/mapEditorMapLayer/LayerButtonCell.cs index 257ca1c..6f3a4f3 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorMapLayer/LayerButtonCell.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorMapLayer/LayerButtonCell.cs @@ -26,7 +26,14 @@ var panel = CellNode.UiPanel.ParentUi as MapEditorPanel; if (panel != null) { - _visible = panel.S_TileMap.Instance.IsLayerEnabled(data.Layer); + if (Data.Layer == EditorTileMap.MarkLayer) //标记层 + { + _visible = true; + } + else + { + _visible = panel.S_TileMap.Instance.IsLayerEnabled(data.Layer); + } SetVisibleIcon(_visible); } } @@ -37,7 +44,14 @@ if (panel != null) { _visible = !_visible; - panel.S_TileMap.Instance.SetLayerEnabled(Data.Layer, _visible); + if (Data.Layer == EditorTileMap.MarkLayer) //隐藏标记层 + { + panel.S_MapEditorTools.Instance.S_ToolRoot.Instance.Visible = _visible; + } + else //隐藏地图层级 + { + panel.S_TileMap.Instance.SetLayerEnabled(Data.Layer, _visible); + } SetVisibleIcon(_visible); } } diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorMapLayer/MapEditorMapLayerPanel.cs b/DungeonShooting_Godot/src/game/ui/mapEditorMapLayer/MapEditorMapLayerPanel.cs index 558ca94..ff3448e 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorMapLayer/MapEditorMapLayerPanel.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorMapLayer/MapEditorMapLayerPanel.cs @@ -42,6 +42,7 @@ _grid.Add(new LayerButtonData("自定义中层", false, EditorTileMap.CustomMiddleLayer)); _grid.Add(new LayerButtonData("高层自动图块", true, EditorTileMap.AutoTopLayer)); _grid.Add(new LayerButtonData("自定义高层", false, EditorTileMap.CustomTopLayer)); + _grid.Add(new LayerButtonData("标记数据层", false, EditorTileMap.MarkLayer)); } public override void OnDestroyUi() diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMarkPanel.cs b/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMarkPanel.cs index 6e3e576..3ddb4ed 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMarkPanel.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMarkPanel.cs @@ -305,33 +305,39 @@ /// public void OnDeleteWave() { - var index = EditorTileMap.SelectWaveIndex; - if (index < 0) + EditorWindowManager.ShowConfirm("提示", "是否删除当前波?", v => { - return; - } + if (v) + { + var index = EditorTileMap.SelectWaveIndex; + if (index < 0) + { + return; + } - var selectPreinstall = GetSelectPreinstall(); - if (selectPreinstall == null) - { - return; - } + var selectPreinstall = GetSelectPreinstall(); + if (selectPreinstall == null) + { + return; + } - //隐藏工具 - S_DynamicTool.Reparent(this); - S_DynamicTool.Instance.Visible = false; - //派发移除标记事件 - var list = selectPreinstall.WaveList[index]; - foreach (var markInfo in list) - { - EventManager.EmitEvent(EventEnum.OnDeleteMark, markInfo); - } - //移除数据 - selectPreinstall.WaveList.RemoveAt(index); - _grid.RemoveByIndex(index); - EditorTileMap.SelectWaveIndex = -1; - //派发选中波数事件 - EventManager.EmitEvent(EventEnum.OnSelectWave, -1); + //隐藏工具 + S_DynamicTool.Reparent(this); + S_DynamicTool.Instance.Visible = false; + //派发移除标记事件 + var list = selectPreinstall.WaveList[index]; + foreach (var markInfo in list) + { + EventManager.EmitEvent(EventEnum.OnDeleteMark, markInfo); + } + //移除数据 + selectPreinstall.WaveList.RemoveAt(index); + _grid.RemoveByIndex(index); + EditorTileMap.SelectWaveIndex = -1; + //派发选中波数事件 + EventManager.EmitEvent(EventEnum.OnSelectWave, -1); + } + }); } /// @@ -359,30 +365,36 @@ /// public void OnDeleteMark() { - if (SelectCell is EditorMarkCell markCell) + EditorWindowManager.ShowConfirm("提示", "是否删除当前标记?", v => { - var index = EditorTileMap.SelectWaveIndex; - if (index < 0) + if (v) { - return; - } + if (SelectCell is EditorMarkCell markCell) + { + var index = EditorTileMap.SelectWaveIndex; + if (index < 0) + { + return; + } - var selectPreinstall = GetSelectPreinstall(); - if (selectPreinstall == null) - { - return; - } + var selectPreinstall = GetSelectPreinstall(); + if (selectPreinstall == null) + { + return; + } - var waveCell = (EditorWaveCell)_grid.GetCell(index); - //隐藏工具 - S_DynamicTool.Reparent(this); - S_DynamicTool.Instance.Visible = false; - var markCellIndex = markCell.Index; - var markInfo = waveCell.Data[markCellIndex]; - //派发移除标记事件 - EventManager.EmitEvent(EventEnum.OnDeleteMark, markInfo); - waveCell.MarkGrid.RemoveByIndex(markCellIndex); - waveCell.Data.RemoveAt(markCellIndex); - } + var waveCell = (EditorWaveCell)_grid.GetCell(index); + //隐藏工具 + S_DynamicTool.Reparent(this); + S_DynamicTool.Instance.Visible = false; + var markCellIndex = markCell.Index; + var markInfo = waveCell.Data[markCellIndex]; + //派发移除标记事件 + EventManager.EmitEvent(EventEnum.OnDeleteMark, markInfo); + waveCell.MarkGrid.RemoveByIndex(markCellIndex); + waveCell.Data.RemoveAt(markCellIndex); + } + } + }); } } diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorSelectObject/MapEditorSelectObjectPanel.cs b/DungeonShooting_Godot/src/game/ui/mapEditorSelectObject/MapEditorSelectObjectPanel.cs index 422250f..c06f20b 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorSelectObject/MapEditorSelectObjectPanel.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorSelectObject/MapEditorSelectObjectPanel.cs @@ -44,17 +44,11 @@ _typeGrid.SetColumns(1); _typeGrid.SetHorizontalExpand(true); _typeGrid.SetCellOffset(new Vector2I(0, 5)); - _typeGrid.Add(new TypeButtonData("所有", -1)); - _typeGrid.Add(new TypeButtonData("武器", 5)); - _typeGrid.Add(new TypeButtonData("道具", 9)); - _typeGrid.Add(new TypeButtonData("敌人", 4)); _objectGrid = new UiGrid(S_ObjectButton, typeof(ObjectButtonCell)); _objectGrid.SetAutoColumns(true); _objectGrid.SetHorizontalExpand(true); _objectGrid.SetCellOffset(new Vector2I(10, 10)); - - _typeGrid.SelectIndex = 0; } public override void OnDestroyUi() @@ -64,6 +58,26 @@ } /// + /// 设置显示的物体类型 + /// + public void SetShowType(ActivityType activityType) + { + _typeGrid.RemoveAll(); + if (activityType == ActivityType.None) + { + _typeGrid.Add(new TypeButtonData("所有", -1)); + _typeGrid.Add(new TypeButtonData(ActivityId.GetTypeName(ActivityType.Weapon), (int)ActivityType.Weapon)); + _typeGrid.Add(new TypeButtonData(ActivityId.GetTypeName(ActivityType.Prop), (int)ActivityType.Prop)); + _typeGrid.Add(new TypeButtonData(ActivityId.GetTypeName(ActivityType.Enemy), (int)ActivityType.Enemy)); + } + else + { + _typeGrid.Add(new TypeButtonData(ActivityId.GetTypeName(activityType), (int)activityType)); + } + _typeGrid.SelectIndex = 0; + } + + /// /// 搜索对象 /// public void OnSearch() @@ -86,8 +100,9 @@ var arr = ExcelConfig.ActivityObject_List.Where( o => { - return (string.IsNullOrEmpty(name) || o.Name.Contains(name) || o.Id.Contains(name)) && - (type < 0 ? _typeArray.Contains(o.Type) : o.Type == type) && o.ShowInMapEditor; + return o.ShowInMapEditor && + (string.IsNullOrEmpty(name) || o.Name.Contains(name) || o.Id.Contains(name)) && + (type < 0 ? _typeArray.Contains(o.Type) : o.Type == type); } ).ToArray(); _objectGrid.SetDataList(arr); diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorTools/MapEditorToolsPanel.cs b/DungeonShooting_Godot/src/game/ui/mapEditorTools/MapEditorToolsPanel.cs index 05a4f17..6f5ff73 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorTools/MapEditorToolsPanel.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorTools/MapEditorToolsPanel.cs @@ -39,6 +39,11 @@ /// public MapEditor.MapEditor.TileMap EditorMap { get; private set; } + /// + /// 是否打开弹窗 + /// + public bool IsOpenPopUps { get; private set; } + private List _doorTools = new List(); private UiGrid _toolGrid; //当前预设的所有标记 @@ -122,6 +127,8 @@ { S_ToolRoot.Instance.Modulate = new Color(1, 1, 1, 0.4f); } + + IsOpenPopUps = UiManager.GetUiInstanceCount(UiManager.UiName.EditorWindow) > 0; } //刷新标记 diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorTools/MarkAreaTool.cs b/DungeonShooting_Godot/src/game/ui/mapEditorTools/MarkAreaTool.cs index 671ce3a..d96a5a3 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorTools/MarkAreaTool.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorTools/MarkAreaTool.cs @@ -47,7 +47,7 @@ public override void _Process(double delta) { - if (!Visible || _markInfo == null) + if (!Visible || _markInfo == null || _toolRoot.UiPanel.IsOpenPopUps || !_toolRoot.UiPanel.S_ToolRoot.Instance.Visible) { return; } diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorTools/MarkTool.cs b/DungeonShooting_Godot/src/game/ui/mapEditorTools/MarkTool.cs index 3c71246..c95780e 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorTools/MarkTool.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorTools/MarkTool.cs @@ -38,7 +38,7 @@ public override void _Process(double delta) { - if (_toolNode != null && MarkInfo != null) + if (_toolNode != null && MarkInfo != null && _toolNode.UiPanel.S_ToolRoot.Instance.Visible) { if (_isDown) {