Polish fullscreen CCS dialogue

This commit is contained in:
hz
2026-08-07 17:56:49 -05:00
parent bab73b53ff
commit 41b3092552
5 changed files with 57 additions and 12 deletions
+22 -6
View File
@@ -126,11 +126,11 @@ func _apply_screen_margins(screen_name: String) -> void:
if screens_margin == null or screen_name.is_empty():
return
var is_fullscreen_study := screen_name == "player"
var margin := 0 if screen_name == "login" else (12 if is_fullscreen_study else (20 if compact_shell else 44))
var margin := 0 if screen_name in ["login", "ccs_cases_2"] else (12 if is_fullscreen_study else (20 if compact_shell else 44))
screens_margin.add_theme_constant_override("margin_left", margin)
screens_margin.add_theme_constant_override("margin_right", margin)
screens_margin.add_theme_constant_override("margin_top", 0 if screen_name == "login" else (12 if is_fullscreen_study else (20 if compact_shell else 34)))
screens_margin.add_theme_constant_override("margin_bottom", 0 if screen_name == "login" else (12 if is_fullscreen_study else 28))
screens_margin.add_theme_constant_override("margin_top", 0 if screen_name in ["login", "ccs_cases_2"] else (12 if is_fullscreen_study else (20 if compact_shell else 34)))
screens_margin.add_theme_constant_override("margin_bottom", 0 if screen_name in ["login", "ccs_cases_2"] else (12 if is_fullscreen_study else 28))
func _build_ui() -> void:
@@ -582,7 +582,7 @@ func _on_drawer_backdrop_input(event: InputEvent) -> void:
func _screen_uses_shell(screen_name: String) -> bool:
return AuthState.is_logged_in and screen_name not in ["login", "legal_consent", "player", "ccs_player"]
return AuthState.is_logged_in and screen_name not in ["login", "legal_consent", "player", "ccs_player", "ccs_cases_2"]
func _update_shell_visibility(screen_name: String) -> void:
@@ -703,11 +703,15 @@ func _input(event: InputEvent) -> void:
_close_drawer()
get_viewport().set_input_as_handled()
return
if current_screen_name in ["player", "ccs_player", "flashcards_study"]:
if _screen_uses_pause_menu(current_screen_name):
_toggle_app_menu()
get_viewport().set_input_as_handled()
func _screen_uses_pause_menu(screen_name: String) -> bool:
return screen_name in ["player", "ccs_player", "ccs_cases_2", "flashcards_study"]
func _refresh_header_controls() -> void:
if feedback_button != null:
feedback_button.visible = AuthState.is_logged_in and size.x >= 560.0
@@ -875,13 +879,15 @@ func _toggle_app_menu() -> void:
_close_app_menu()
else:
UISoundService.play_sound("open")
_set_current_screen_pause_menu_open(true)
app_menu.visible = true
app_menu.size = app_menu.custom_minimum_size
app_menu.position = (get_viewport_rect().size - app_menu.size) * 0.5
menu_exit_button.visible = (current_screen_name == "player" and BlockSessionService.block_started) or current_screen_name in ["ccs_player", "flashcards_study"]
menu_exit_button.visible = (current_screen_name == "player" and BlockSessionService.block_started) or current_screen_name in ["ccs_player", "ccs_cases_2", "flashcards_study"]
if menu_exit_button.visible:
menu_exit_button.text = (
"Abandon CCS Case" if current_screen_name == "ccs_player"
else "Exit CCS Interview" if current_screen_name == "ccs_cases_2"
else "Exit Study Session" if current_screen_name == "flashcards_study"
else "Leave (timer continues)" if BlockSessionService.session_kind == "simulation"
else "Exit Run")
@@ -892,9 +898,16 @@ func _toggle_app_menu() -> void:
func _close_app_menu() -> void:
if app_menu != null:
app_menu.visible = false
_set_current_screen_pause_menu_open(false)
BlockSessionService.resume_current_question_timer()
func _set_current_screen_pause_menu_open(open: bool) -> void:
var screen = screens.get(current_screen_name)
if screen != null and screen.has_method("set_pause_menu_open"):
screen.set_pause_menu_open(open)
func _navigate_from_pause(target_screen: String) -> void:
var return_screen := current_screen_name
show_screen(target_screen, {"return_screen": return_screen})
@@ -911,6 +924,9 @@ func exit_current_run() -> void:
if current_screen_name == "flashcards_study":
show_screen("flashcards_hub")
return
if current_screen_name == "ccs_cases_2":
show_screen("dashboard")
return
if BlockSessionService.block_started and BlockSessionService.session_kind != "simulation":
BlockSessionService.finish_block()
elif BlockSessionService.session_kind == "simulation":