From 5b4ae38227ab59f1c35008b09604f25d5386d05a Mon Sep 17 00:00:00 2001 From: metamuffin Date: Thu, 19 Sep 2024 18:16:46 +0200 Subject: fix scene trans getting stuck in black --- client/menu/scene_transition.gd | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) (limited to 'client/menu') diff --git a/client/menu/scene_transition.gd b/client/menu/scene_transition.gd index 9b6b1cac..b30897aa 100644 --- a/client/menu/scene_transition.gd +++ b/client/menu/scene_transition.gd @@ -22,26 +22,34 @@ extends Control var black = true var fading = false +var queue = [] + func _ready(): $ColorRect.visible = true -func fade_in(): - if fading: await anim.animation_finished - if not black: push_error("already faded in"); return +func next(): + if fading: return + if queue.is_empty(): return fading = true - anim.play_backwards("fade") - await anim.animation_finished - self.mouse_filter = Control.MOUSE_FILTER_IGNORE - fading = false; black = false + if queue.pop_front(): + anim.play_backwards("fade") + await anim.animation_finished + self.mouse_filter = Control.MOUSE_FILTER_IGNORE + black = false + else: + self.mouse_filter = Control.MOUSE_FILTER_STOP + anim.play("fade") + await anim.animation_finished + black = false + fading = false + await next() +func fade_in(): + queue.push_back(true) + await next() func fade_out(): - if fading: await anim.animation_finished - if black: push_error("already faded out"); return - fading = true - self.mouse_filter = Control.MOUSE_FILTER_STOP - anim.play("fade") - await anim.animation_finished - fading = false; black = true + queue.push_back(false) + await next() func _exit_tree(): if fading: push_error("SceneTransition destroyed while fading") -- cgit v1.2.3-70-g09d2