From 9d09ee548ee04de732b9e887ec4f0e32c4d16163 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Tue, 21 Apr 2026 09:48:00 +0200 Subject: [PATCH] fix(ui): loading screen blocks input + main menu polls during catalog wait - loading_screen: opaque BG (was 0.75 alpha) + mouse_filter STOP so the loading state genuinely occludes the underlying screen - main_menu: poll SimBridge.poll_snapshot in _process while waiting for the bookmark catalog so the new-game flow doesn't stall on the catalog round-trip introduced in Workstream 3 (#680) --- client/ui/meta/screens/loading/loading_screen.gd | 4 ++-- client/ui/meta/screens/main_menu/main_menu.gd | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/client/ui/meta/screens/loading/loading_screen.gd b/client/ui/meta/screens/loading/loading_screen.gd index e9f2f3347..240de1d0e 100644 --- a/client/ui/meta/screens/loading/loading_screen.gd +++ b/client/ui/meta/screens/loading/loading_screen.gd @@ -4,7 +4,7 @@ extends MetaScreen ## Full-screen, dark overlay with centered status text. ## #724: Shows client version (from project.yaml) and protocol version below the status text. -const BG_COLOR := Color(0.0, 0.0, 0.0, 0.75) +const BG_COLOR := Color(0.05, 0.05, 0.08, 1.0) const TEXT_COLOR := Color("#c8d0e0") const VERSION_COLOR := Color("#667788") const FONT_SIZE := 18 @@ -17,7 +17,7 @@ var _version_label: Label = null func _ready() -> void: closable_by_escape = false visible = false - mouse_filter = Control.MOUSE_FILTER_IGNORE + mouse_filter = Control.MOUSE_FILTER_STOP set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT) _build_ui() diff --git a/client/ui/meta/screens/main_menu/main_menu.gd b/client/ui/meta/screens/main_menu/main_menu.gd index 36ec88065..479a90fa7 100644 --- a/client/ui/meta/screens/main_menu/main_menu.gd +++ b/client/ui/meta/screens/main_menu/main_menu.gd @@ -62,6 +62,11 @@ func _on_new_game() -> void: SimBridge.connect_to_sim() +func _process(_delta: float) -> void: + if _waiting_for_catalog: + SimBridge.poll_snapshot() + + func _ensure_loading_screen() -> void: if _loading_screen != null and is_instance_valid(_loading_screen): return