From ba1b1bf6f1294dee741b43cf2eb25eae4a7a4220 Mon Sep 17 00:00:00 2001 From: Sofia Date: Mon, 27 Jul 2026 02:39:36 +0300 Subject: [PATCH] Make hud exit button work on replay --- .../scenes/misc/standalone_replay_global.tscn | 2 ++ rust/src/replay.rs | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/godot/scenes/misc/standalone_replay_global.tscn b/godot/scenes/misc/standalone_replay_global.tscn index 9163722..3a1a730 100644 --- a/godot/scenes/misc/standalone_replay_global.tscn +++ b/godot/scenes/misc/standalone_replay_global.tscn @@ -2,7 +2,9 @@ [ext_resource type="PackedScene" uid="uid://d3377ecff6nyn" path="res://scenes/replay_finished.tscn" id="1_q5ujf"] [ext_resource type="PackedScene" uid="uid://c1gs6cqek1qlq" path="res://scenes/ui/hud.tscn" id="2_a451s"] +[ext_resource type="PackedScene" uid="uid://lahirbqfppvw" path="res://scenes/main.tscn" id="2_r7g00"] [node name="standalone_replay_global" type="StandaloneReplayManager" unique_id=730657724] replay_finished_screen = ExtResource("1_q5ujf") +main_menu = ExtResource("2_r7g00") hud_scene = ExtResource("2_a451s") diff --git a/rust/src/replay.rs b/rust/src/replay.rs index 3cdcfb6..48e7023 100644 --- a/rust/src/replay.rs +++ b/rust/src/replay.rs @@ -30,6 +30,8 @@ pub struct StandaloneReplayManager { #[export] replay_finished_screen: Option>, #[export] + main_menu: Option>, + #[export] hud_scene: Option>, loading_replay: bool, @@ -92,6 +94,16 @@ impl StandaloneReplayManager { if let Some(scene) = &self.hud_scene { let hud = scene.instantiate_as::(); + + hud.signals().on_exit_to_lobby().connect_other(self, |s| { + s.on_done(); + }); + + hud.signals().on_exit().connect_other(self, |s| { + s.clear(); + s.go_to_menu(); + }); + self.hud = Some(hud.clone()); playback.add_child(&hud); } @@ -115,6 +127,12 @@ impl StandaloneReplayManager { playback.queue_free(); } } + + pub fn go_to_menu(&mut self) { + if let Some(scene) = &self.main_menu { + self.base().get_tree().change_scene_to_packed(scene); + } + } } #[derive(GodotClass)]