From 285b90f503d9efecd56d3cb802bfd25251c4b6f4 Mon Sep 17 00:00:00 2001 From: Rendo Date: Tue, 29 Jul 2025 00:42:29 +0500 Subject: [PATCH] Play button in editor --- addons/pvzadventure/.gitignore | 1 + .../pvzadventure/scenes/adventure_editor.tscn | 3 ++- .../pvzadventure/scripts/AdventureEditor.cs | 18 ++++++++++++++---- .../pvzadventure/scripts/AdventurePlayer.cs | 19 +++++++++++++++++++ .../scripts/AdventurePlayer.cs.uid | 1 + assets/levels/win_test.tres | 1 + 6 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 addons/pvzadventure/.gitignore create mode 100644 addons/pvzadventure/scripts/AdventurePlayer.cs create mode 100644 addons/pvzadventure/scripts/AdventurePlayer.cs.uid diff --git a/addons/pvzadventure/.gitignore b/addons/pvzadventure/.gitignore new file mode 100644 index 0000000..6e25fa8 --- /dev/null +++ b/addons/pvzadventure/.gitignore @@ -0,0 +1 @@ +cache/ \ No newline at end of file diff --git a/addons/pvzadventure/scenes/adventure_editor.tscn b/addons/pvzadventure/scenes/adventure_editor.tscn index 6a7f9f3..3b35cce 100644 --- a/addons/pvzadventure/scenes/adventure_editor.tscn +++ b/addons/pvzadventure/scenes/adventure_editor.tscn @@ -41,7 +41,7 @@ script = ExtResource("2_d5hwn") [node name="FileDialog" type="FileDialog" parent="Editor/StatusBar/HBoxContainer/FileButton"] -[node name="Button" type="Button" parent="Editor/StatusBar/HBoxContainer"] +[node name="PlayButton" type="Button" parent="Editor/StatusBar/HBoxContainer"] layout_mode = 2 text = "Play" flat = true @@ -84,6 +84,7 @@ text = "New" [connection signal="HardReloadRequested" from="." to="Editor/WorkArea/PanelContainer" method="ClearChildren"] [connection signal="ResourceChanged" from="." to="Editor/WorkArea/Inspector/ResourceInspector" method="Refresh"] +[connection signal="pressed" from="Editor/StatusBar/HBoxContainer/PlayButton" to="." method="Play"] [connection signal="Refreshed" from="Editor/WorkArea/Inspector/ResourceInspector" to="." method="Save"] [connection signal="button_clicked" from="Editor/WorkArea/Inspector/ResourceInspector/Tree" to="Editor/WorkArea/Inspector/ResourceInspector" method="OnTreeButtonClicked"] [connection signal="item_edited" from="Editor/WorkArea/Inspector/ResourceInspector/Tree" to="Editor/WorkArea/Inspector/ResourceInspector" method="OnItemEdited"] diff --git a/addons/pvzadventure/scripts/AdventureEditor.cs b/addons/pvzadventure/scripts/AdventureEditor.cs index 196799c..a6f3948 100644 --- a/addons/pvzadventure/scripts/AdventureEditor.cs +++ b/addons/pvzadventure/scripts/AdventureEditor.cs @@ -55,11 +55,21 @@ public partial class AdventureEditor : MarginContainer HardReload(); } } - public override void _ExitTree() - { - EditorInterface.Singleton.GetInspector().PropertyEdited -= OnInspectorPropertyChanged; + public void Play() + { + var player = new AdventurePlayer(); + var packed = new PackedScene(); + player.pathToLevel = editedPath; + packed.Pack(player); + ResourceSaver.Save(packed, "res://addons/pvzadventure/cache/player.tscn"); + EditorInterface.Singleton.PlayCustomScene("res://addons/pvzadventure/cache/player.tscn"); + } + public override void _ExitTree() + { + EditorInterface.Singleton.GetInspector().PropertyEdited -= OnInspectorPropertyChanged; EditorInterface.Singleton.GetInspector().EditedObjectChanged -= OnResourceChanged; - } + } + } #endif \ No newline at end of file diff --git a/addons/pvzadventure/scripts/AdventurePlayer.cs b/addons/pvzadventure/scripts/AdventurePlayer.cs new file mode 100644 index 0000000..fcc8ba4 --- /dev/null +++ b/addons/pvzadventure/scripts/AdventurePlayer.cs @@ -0,0 +1,19 @@ +using Godot; +using Newlon; + +[Tool] +public partial class AdventurePlayer : Node +{ + const string tilesetUID = "uid://dd3yegl1xo44m"; + [Export] public string pathToLevel; + public override void _Ready() + { + if (Engine.IsEditorHint()) return; + + CallDeferred("InitLevel"); + } + private void InitLevel() + { + LevelController.Instance.StartLevel(ResourceLoader.Load(tilesetUID), ResourceLoader.Load(pathToLevel)); + } +} diff --git a/addons/pvzadventure/scripts/AdventurePlayer.cs.uid b/addons/pvzadventure/scripts/AdventurePlayer.cs.uid new file mode 100644 index 0000000..160fa99 --- /dev/null +++ b/addons/pvzadventure/scripts/AdventurePlayer.cs.uid @@ -0,0 +1 @@ +uid://bbkfrk07l6kev diff --git a/assets/levels/win_test.tres b/assets/levels/win_test.tres index 7c662e7..c71ece7 100644 --- a/assets/levels/win_test.tres +++ b/assets/levels/win_test.tres @@ -38,5 +38,6 @@ wavePercentage = 0.0 standardWaveDelay = 20.0 initialWaveDelay = 10.0 reward = ExtResource("1_sw8bw") +forbiddenPlants = [] waves = [SubResource("Resource_swlbc"), SubResource("Resource_pkoaj")] initialScenes = Array[PackedScene]([null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null])