From f9a3a5427c37085001a658fdda572bbe02fec447 Mon Sep 17 00:00:00 2001 From: Rendo Date: Mon, 7 Jul 2025 14:28:03 +0500 Subject: [PATCH] Disordered editor start --- addons/pvzadventure/GroupSpawn.cs | 7 +++ addons/pvzadventure/GroupSpawn.cs.uid | 1 + addons/pvzadventure/RowSpawn.cs | 12 +++++ addons/pvzadventure/RowSpawn.cs.uid | 1 + addons/pvzadventure/WaveData.cs | 4 +- addons/pvzadventure/ZombieRowSpawn.cs | 12 ----- .../pvzadventure/scenes/adventure_editor.tscn | 6 ++- .../scenes/disordered_editor.tscn | 43 ++++++++++++++++++ addons/pvzadventure/scenes/dn_d_card.tscn | 45 +++++++++++++++++++ .../pvzadventure/scenes/dn_d_with_number.tscn | 23 ++++++++++ .../pvzadventure/scripts/AdventureEditor.cs | 1 + .../pvzadventure/scripts/DisorderedEditor.cs | 7 +++ .../scripts/DisorderedEditor.cs.uid | 1 + addons/pvzadventure/scripts/DnDCard.cs | 37 +++++++++++++++ addons/pvzadventure/scripts/DnDCard.cs.uid | 1 + addons/pvzadventure/scripts/DnDWithNumber.cs | 26 +++++++++++ .../pvzadventure/scripts/DnDWithNumber.cs.uid | 1 + resources/levels/testlvl.tres | 12 ++++- 18 files changed, 223 insertions(+), 17 deletions(-) create mode 100644 addons/pvzadventure/GroupSpawn.cs create mode 100644 addons/pvzadventure/GroupSpawn.cs.uid create mode 100644 addons/pvzadventure/RowSpawn.cs create mode 100644 addons/pvzadventure/RowSpawn.cs.uid delete mode 100644 addons/pvzadventure/ZombieRowSpawn.cs create mode 100644 addons/pvzadventure/scenes/disordered_editor.tscn create mode 100644 addons/pvzadventure/scenes/dn_d_card.tscn create mode 100644 addons/pvzadventure/scenes/dn_d_with_number.tscn create mode 100644 addons/pvzadventure/scripts/DisorderedEditor.cs create mode 100644 addons/pvzadventure/scripts/DisorderedEditor.cs.uid create mode 100644 addons/pvzadventure/scripts/DnDCard.cs create mode 100644 addons/pvzadventure/scripts/DnDCard.cs.uid create mode 100644 addons/pvzadventure/scripts/DnDWithNumber.cs create mode 100644 addons/pvzadventure/scripts/DnDWithNumber.cs.uid diff --git a/addons/pvzadventure/GroupSpawn.cs b/addons/pvzadventure/GroupSpawn.cs new file mode 100644 index 0000000..72498b8 --- /dev/null +++ b/addons/pvzadventure/GroupSpawn.cs @@ -0,0 +1,7 @@ +using Godot; + +public partial class GroupSpawn : Resource +{ + [Export] public PackedScene packedScene; + [Export] public int amount; +} diff --git a/addons/pvzadventure/GroupSpawn.cs.uid b/addons/pvzadventure/GroupSpawn.cs.uid new file mode 100644 index 0000000..f016205 --- /dev/null +++ b/addons/pvzadventure/GroupSpawn.cs.uid @@ -0,0 +1 @@ +uid://b604mrxpt0owi diff --git a/addons/pvzadventure/RowSpawn.cs b/addons/pvzadventure/RowSpawn.cs new file mode 100644 index 0000000..1dedd93 --- /dev/null +++ b/addons/pvzadventure/RowSpawn.cs @@ -0,0 +1,12 @@ +using Godot; + +[Tool] +public partial class RowSpawn : Resource +{ + [Export] public SpawnInfo zombie1; + [Export] public SpawnInfo zombie2; + [Export] public SpawnInfo zombie3; + [Export] public SpawnInfo zombie4; + [Export] public SpawnInfo zombie5; + +} diff --git a/addons/pvzadventure/RowSpawn.cs.uid b/addons/pvzadventure/RowSpawn.cs.uid new file mode 100644 index 0000000..8e41a18 --- /dev/null +++ b/addons/pvzadventure/RowSpawn.cs.uid @@ -0,0 +1 @@ +uid://comcftlx0eey2 diff --git a/addons/pvzadventure/WaveData.cs b/addons/pvzadventure/WaveData.cs index dd8fc55..64ff8e2 100644 --- a/addons/pvzadventure/WaveData.cs +++ b/addons/pvzadventure/WaveData.cs @@ -5,7 +5,7 @@ using Godot.Collections; [Tool] public partial class WaveData : Resource { - [Export] private Array zombiesDisordered; - [Export] private Array zombiesOrdered; + [Export] private Array zombiesDisordered; + [Export] private Array zombiesOrdered; [Export] private Array spawns; } diff --git a/addons/pvzadventure/ZombieRowSpawn.cs b/addons/pvzadventure/ZombieRowSpawn.cs deleted file mode 100644 index 3147c6c..0000000 --- a/addons/pvzadventure/ZombieRowSpawn.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Godot; - -[Tool] -public partial class ZombieRowSpawn : Resource -{ - [Export] public ZombieResource zombie1; - [Export] public ZombieResource zombie2; - [Export] public ZombieResource zombie3; - [Export] public ZombieResource zombie4; - [Export] public ZombieResource zombie5; - -} diff --git a/addons/pvzadventure/scenes/adventure_editor.tscn b/addons/pvzadventure/scenes/adventure_editor.tscn index 5a4ed02..6802855 100644 --- a/addons/pvzadventure/scenes/adventure_editor.tscn +++ b/addons/pvzadventure/scenes/adventure_editor.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=4 format=3 uid="uid://dkq82o31vr3i2"] +[gd_scene load_steps=5 format=3 uid="uid://dkq82o31vr3i2"] [ext_resource type="Script" uid="uid://dkgxtig5fwdgi" path="res://addons/pvzadventure/scripts/AdventureEditor.cs" id="1_go5yu"] [ext_resource type="Script" uid="uid://binuuattefn7d" path="res://addons/pvzadventure/scripts/FileButton.cs" id="2_d5hwn"] +[ext_resource type="PackedScene" uid="uid://dbiv5n3asc848" path="res://addons/pvzadventure/scenes/disordered_editor.tscn" id="3_1ojhm"] [ext_resource type="Script" uid="uid://b0hl4ap18wbb2" path="res://addons/pvzadventure/scripts/AdventureResourceInspector.cs" id="3_d5hwn"] [node name="AdventureEditor" type="MarginContainer"] @@ -48,6 +49,9 @@ split_offset = 500 [node name="PanelContainer" type="PanelContainer" parent="VBoxContainer/WorkArea"] layout_mode = 2 +[node name="DisorderedEditor" parent="VBoxContainer/WorkArea/PanelContainer" instance=ExtResource("3_1ojhm")] +layout_mode = 2 + [node name="Inspector" type="VSplitContainer" parent="VBoxContainer/WorkArea"] layout_mode = 2 diff --git a/addons/pvzadventure/scenes/disordered_editor.tscn b/addons/pvzadventure/scenes/disordered_editor.tscn new file mode 100644 index 0000000..409f6b8 --- /dev/null +++ b/addons/pvzadventure/scenes/disordered_editor.tscn @@ -0,0 +1,43 @@ +[gd_scene load_steps=3 format=3 uid="uid://dbiv5n3asc848"] + +[ext_resource type="Script" uid="uid://dvwbkbsccrnri" path="res://addons/pvzadventure/scripts/DisorderedEditor.cs" id="1_55p46"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_c8vty"] +content_margin_left = 20.0 +bg_color = Color(0.351173, 0.700939, 0, 1) +border_width_left = 5 +border_width_top = 5 +border_width_right = 5 +border_width_bottom = 5 +border_color = Color(0.216217, 0.607245, 9.62615e-07, 1) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[node name="DisorderedEditor" type="ScrollContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +vertical_scroll_mode = 0 +script = ExtResource("1_55p46") + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/margin_left = 0 +theme_override_constants/margin_top = 0 +theme_override_constants/margin_right = 0 +theme_override_constants/margin_bottom = 200 + +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="AddButton" type="Button" parent="MarginContainer/HBoxContainer"] +layout_mode = 2 +theme_override_styles/normal = SubResource("StyleBoxFlat_c8vty") diff --git a/addons/pvzadventure/scenes/dn_d_card.tscn b/addons/pvzadventure/scenes/dn_d_card.tscn new file mode 100644 index 0000000..2dd6334 --- /dev/null +++ b/addons/pvzadventure/scenes/dn_d_card.tscn @@ -0,0 +1,45 @@ +[gd_scene load_steps=4 format=3 uid="uid://dcxxgs78o2apq"] + +[ext_resource type="Script" uid="uid://c2wsvwbqpay8p" path="res://addons/pvzadventure/scripts/DnDCard.cs" id="1_k1qq1"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_t7e3j"] +bg_color = Color(0.136826, 0.136826, 0.136826, 1) +border_width_left = 5 +border_width_top = 5 +border_width_right = 5 +border_width_bottom = 5 +border_color = Color(0.099986, 0.099986, 0.0999859, 1) +border_blend = true +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[sub_resource type="ViewportTexture" id="ViewportTexture_k1qq1"] +viewport_path = NodePath("SubViewport") + +[node name="DnDCard" type="PanelContainer"] +custom_minimum_size = Vector2(60, 80) +anchors_preset = -1 +anchor_right = 0.098 +anchor_bottom = 0.172 +offset_right = 1.2 +offset_bottom = 11.2 +theme_override_styles/panel = SubResource("StyleBoxFlat_t7e3j") +script = ExtResource("1_k1qq1") + +[node name="TextureRect" type="TextureRect" parent="."] +layout_mode = 2 +mouse_filter = 2 +texture = SubResource("ViewportTexture_k1qq1") +expand_mode = 4 +stretch_mode = 5 + +[node name="SubViewport" type="SubViewport" parent="."] +transparent_bg = true +canvas_item_default_texture_filter = 0 +size = Vector2i(50, 70) + +[node name="Camera2D" type="Camera2D" parent="SubViewport"] +position = Vector2(0, -40) +zoom = Vector2(0.6, 0.6) diff --git a/addons/pvzadventure/scenes/dn_d_with_number.tscn b/addons/pvzadventure/scenes/dn_d_with_number.tscn new file mode 100644 index 0000000..c57a7e3 --- /dev/null +++ b/addons/pvzadventure/scenes/dn_d_with_number.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=3 format=3 uid="uid://bcswnjdptjuuf"] + +[ext_resource type="PackedScene" uid="uid://dcxxgs78o2apq" path="res://addons/pvzadventure/scenes/dn_d_card.tscn" id="1_7k686"] +[ext_resource type="Script" uid="uid://da8tobx0q5ij3" path="res://addons/pvzadventure/scripts/DnDWithNumber.cs" id="1_dkrus"] + +[node name="DnDWithNumber" type="VBoxContainer"] +offset_right = 40.0 +offset_bottom = 40.0 +script = ExtResource("1_dkrus") + +[node name="DnDCard" parent="." instance=ExtResource("1_7k686")] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="SpinBox" type="SpinBox" parent="."] +layout_mode = 2 +size_flags_vertical = 8 +min_value = 1.0 +value = 1.0 +allow_greater = true + +[connection signal="DnDDropped" from="DnDCard" to="." method="OnCardDropped"] +[connection signal="value_changed" from="SpinBox" to="." method="OnNumberSubmitted"] diff --git a/addons/pvzadventure/scripts/AdventureEditor.cs b/addons/pvzadventure/scripts/AdventureEditor.cs index 4a84775..5f52654 100644 --- a/addons/pvzadventure/scripts/AdventureEditor.cs +++ b/addons/pvzadventure/scripts/AdventureEditor.cs @@ -19,4 +19,5 @@ public partial class AdventureEditor : MarginContainer { ResourceSaver.Save(editedResource, editedPath); } + } diff --git a/addons/pvzadventure/scripts/DisorderedEditor.cs b/addons/pvzadventure/scripts/DisorderedEditor.cs new file mode 100644 index 0000000..40d6cb7 --- /dev/null +++ b/addons/pvzadventure/scripts/DisorderedEditor.cs @@ -0,0 +1,7 @@ +using Godot; + +[Tool] +public partial class DisorderedEditor : ScrollContainer +{ + public WaveData editedWave; +} diff --git a/addons/pvzadventure/scripts/DisorderedEditor.cs.uid b/addons/pvzadventure/scripts/DisorderedEditor.cs.uid new file mode 100644 index 0000000..fc2e3dc --- /dev/null +++ b/addons/pvzadventure/scripts/DisorderedEditor.cs.uid @@ -0,0 +1 @@ +uid://dvwbkbsccrnri diff --git a/addons/pvzadventure/scripts/DnDCard.cs b/addons/pvzadventure/scripts/DnDCard.cs new file mode 100644 index 0000000..e6c7070 --- /dev/null +++ b/addons/pvzadventure/scripts/DnDCard.cs @@ -0,0 +1,37 @@ +using Godot; +using Godot.Collections; + +[Tool] +public partial class DnDCard : PanelContainer +{ + private Variant tempData; + private PackedScene packedScene; + private Node instantiated; + + [Signal] public delegate void DnDDroppedEventHandler(PackedScene scene); + + public override void _Notification(int what) + { + if (what == NotificationDragBegin) + { + tempData = GetViewport().GuiGetDragData(); + } + else if (what == NotificationDragEnd && GetGlobalRect().HasPoint(GetGlobalMousePosition())) + { + var loaded = ResourceLoader.Load(tempData.AsGodotDictionary()["files"].AsStringArray()[0]); + if (loaded is PackedScene scene) + { + packedScene = scene; + EmitSignal(SignalName.DnDDropped, packedScene); + } + } + } + private void Refresh() + { + if (instantiated != null) instantiated.QueueFree(); + instantiated = packedScene.Instantiate(); + GetNode("SubViewport").AddChild(instantiated); + } + + +} diff --git a/addons/pvzadventure/scripts/DnDCard.cs.uid b/addons/pvzadventure/scripts/DnDCard.cs.uid new file mode 100644 index 0000000..e102243 --- /dev/null +++ b/addons/pvzadventure/scripts/DnDCard.cs.uid @@ -0,0 +1 @@ +uid://c2wsvwbqpay8p diff --git a/addons/pvzadventure/scripts/DnDWithNumber.cs b/addons/pvzadventure/scripts/DnDWithNumber.cs new file mode 100644 index 0000000..8a16c90 --- /dev/null +++ b/addons/pvzadventure/scripts/DnDWithNumber.cs @@ -0,0 +1,26 @@ +using Godot; + +[Tool] +public partial class DnDWithNumber : VBoxContainer +{ + [Signal] public delegate void DnDChangedEventHandler(PackedScene scene, int number); + private PackedScene packedScene; + private int number; + + public void OnCardDropped(PackedScene scene) + { + packedScene = scene; + SendSignal(); + } + + public void OnNumberSubmitted(float value) + { + number = (int)value; + SendSignal(); + } + + public void SendSignal() + { + EmitSignal(SignalName.DnDChanged, packedScene, number); + } +} diff --git a/addons/pvzadventure/scripts/DnDWithNumber.cs.uid b/addons/pvzadventure/scripts/DnDWithNumber.cs.uid new file mode 100644 index 0000000..43e2f36 --- /dev/null +++ b/addons/pvzadventure/scripts/DnDWithNumber.cs.uid @@ -0,0 +1 @@ +uid://da8tobx0q5ij3 diff --git a/resources/levels/testlvl.tres b/resources/levels/testlvl.tres index 0023204..7520364 100644 --- a/resources/levels/testlvl.tres +++ b/resources/levels/testlvl.tres @@ -1,9 +1,17 @@ -[gd_resource type="Resource" script_class="AdventureLevelResource" load_steps=2 format=3 uid="uid://bx1wnrgickeyd"] +[gd_resource type="Resource" script_class="AdventureLevelResource" load_steps=4 format=3 uid="uid://bx1wnrgickeyd"] [ext_resource type="Script" uid="uid://bximdujbkj2n4" path="res://addons/pvzadventure/AdventureLevelResource.cs" id="1_ed2ji"] +[ext_resource type="Script" uid="uid://7rptlb5qr3b6" path="res://addons/pvzadventure/WaveData.cs" id="2_46l53"] + +[sub_resource type="Resource" id="Resource_46l53"] +script = ExtResource("2_46l53") +zombiesDisordered = [null] +zombiesOrdered = [null] +spawns = [null] +metadata/_custom_type_script = "uid://7rptlb5qr3b6" [resource] script = ExtResource("1_ed2ji") startSun = 0.0 -waves = [] +waves = [SubResource("Resource_46l53")] metadata/_custom_type_script = "uid://bximdujbkj2n4"