diff options
-rw-r--r-- | client/menu/scene_transition.gd | 36 |
1 files changed, 22 insertions, 14 deletions
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") |