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)
{