From 9c636b231b432976d9d7c3044f9e488f0f7cedf3 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Thu, 18 Sep 2025 22:38:12 +0200 Subject: Fix bug showing lobby in game; Fix race condition/UB in scene transition --- client/gui/menus/transition/scene_transition.gd | 5 ++++- client/gui/overlays/lobby/lobby.gd | 13 +++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) (limited to 'client/gui') diff --git a/client/gui/menus/transition/scene_transition.gd b/client/gui/menus/transition/scene_transition.gd index 330d67d6..332647b5 100644 --- a/client/gui/menus/transition/scene_transition.gd +++ b/client/gui/menus/transition/scene_transition.gd @@ -24,6 +24,8 @@ var s_current = false var s_target = false var fading = false +signal animation_end + func _ready(): $black.visible = true text.visible = true @@ -34,7 +36,7 @@ func set_loading_text(s: String): text_anim.play("fade") func next(): - while fading: await black_anim.animation_finished + while fading: await animation_end if s_target == s_current: return fading = true if s_target: @@ -53,6 +55,7 @@ func next(): await get_tree().process_frame # animation finishes one frame early s_current = false fading = false + animation_end.emit() await next() func fade_in(): diff --git a/client/gui/overlays/lobby/lobby.gd b/client/gui/overlays/lobby/lobby.gd index 8c372c70..2b40cada 100644 --- a/client/gui/overlays/lobby/lobby.gd +++ b/client/gui/overlays/lobby/lobby.gd @@ -48,8 +48,9 @@ func _ready(): game.update_players.connect(update_players) initialize() game.data_updated.connect(initialize) - game.join_state_updated.connect(_on_game_join_state_updated) - _on_game_join_state_updated(game.join_state) + game.join_state_updated.connect(_update_visible) + game.in_lobby_updated.connect(_update_visible) + _update_visible(false) check_for_music() func initialize(): @@ -165,12 +166,8 @@ func _on_start_pressed(): game.mp.send_chat(game.my_player_id, start_msg) Sound.play_music("stop") # TODO: Game music enter -func _on_game_join_state_updated(state: Game.JoinState): - match state: - Game.JoinState.JOINED: - visible = true - Game.JoinState.SPECTATING: - visible = false +func _update_visible(_state: bool): + visible = game.in_lobby and game.join_state == Game.JoinState.JOINED func check_for_music(): if visible: -- cgit v1.2.3-70-g09d2