Simplify exam simulations and strip the slot machine down to just the machine

Simulations no longer color-code correct/incorrect choices, retry a
failed per-question autosave, or show the RZ coin/ELO badge - users
move on immediately after submitting a timed block, same as a real
exam. The slot machine panel now shows only the cabinet/reels/lever
and a status line (title, banner, controls row, rewards list, and
footer removed), the reels fill the cabinet window instead of
floating in a black border, the coin-burst animation no longer
starts oversized, and the toolbar button is UAT-only via
Brand.is_uat_environment().

Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
hz
2026-07-30 14:50:12 -05:00
co-authored by Claude Sonnet 5
parent 94de696af1
commit 9f150baecc
3 changed files with 31 additions and 367 deletions
+11 -2
View File
@@ -1193,6 +1193,11 @@ func _on_simulation_request_failed(message: String) -> void:
if BlockSessionService.session_kind != "simulation":
return
simulation_submit_pending = false
if ExamSimulationService.last_failed_action != "submit":
# A per-question autosave failing shouldn't interrupt a timed exam with a
# blocking "Retry" - the next answer/navigation naturally retries it, and
# the final submit sends the complete, authoritative state regardless.
return
next_button.disabled = false
next_button.text = "Retry"
next_button.tooltip_text = message
@@ -2389,7 +2394,9 @@ func _refresh_toolbar_state() -> void:
if calculator_button != null:
calculator_button.visible = true
if slot_machine_button != null:
slot_machine_button.visible = true
slot_machine_button.visible = Brand.is_uat_environment()
if credits_badge != null:
credits_badge.visible = BlockSessionService.session_kind != "simulation"
_apply_question_theme()
@@ -3404,7 +3411,9 @@ func _style_choice_button_for_state(index: int, choice_id: String) -> void:
var dark: bool = true if theme_service == null else theme_service.is_dark_mode()
var state := "default"
var correct_id := str(BlockSessionService.get_current_question().get("correct_choice_id", ""))
var reviewing := pending_correct_advance or not current_answer.is_empty()
# Exam simulations don't reveal right/wrong - you move on after submitting,
# same as a real exam - so only "selected"/"eliminated" styling applies here.
var reviewing := BlockSessionService.session_kind != "simulation" and (pending_correct_advance or not current_answer.is_empty())
if reviewing and choice_id == correct_id:
state = "correct"
elif locked_wrong_choice_ids.has(choice_id) or (reviewing and choice_id != "" and choice_id != correct_id):