Complete CCS results and rating flow

This commit is contained in:
hz
2026-07-15 11:08:13 -05:00
parent 9f379cda5c
commit 52d435fa2e
14 changed files with 402 additions and 47 deletions
+29 -5
View File
@@ -17,6 +17,8 @@ var time_row: HBoxContainer
var report_dialog: Control
var report_button: Button
var workspace: HSplitContainer
var leave_button: Button
var leaving := false
func _ready() -> void:
set_anchors_preset(Control.PRESET_FULL_RECT); add_theme_constant_override("separation", 8)
@@ -46,17 +48,20 @@ func _ready() -> void:
var button := Button.new(); button.text = "+%s" % ("1 day" if minutes == 1440 else "%d min" % minutes); button.pressed.connect(CCSService.send_command.bind("advance", "", minutes)); time_row.add_child(button)
var reassess := Button.new(); reassess.text = "Interval history"; reassess.pressed.connect(CCSService.send_command.bind("interval_history", "", 0)); clerk.add_child(reassess)
end_button = Button.new(); end_button.text = "End case"; Style.style_chip(end_button, Style.AMBER); end_button.pressed.connect(_end_case); clerk.add_child(end_button)
var leave := Button.new(); leave.text = "Leave case"; Style.style_chip(leave, Style.RED); leave.pressed.connect(_leave); clerk.add_child(leave)
leave_button = Button.new(); leave_button.text = "Leave case"; Style.style_chip(leave_button, Style.RED); leave_button.pressed.connect(_leave); clerk.add_child(leave_button)
status = Label.new(); Style.set_label(status, 14, Style.RED); add_child(status)
timer = Timer.new(); timer.wait_time = 1; timer.timeout.connect(_tick); add_child(timer)
CCSService.attempt_changed.connect(_render)
CCSService.attempt_abandoned.connect(_on_abandoned)
CCSService.orders_changed.connect(_render_search)
CCSService.request_failed.connect(func(message: String): status.text = message)
CCSService.request_failed.connect(_request_failed)
CCSService.report_submitted.connect(_report_submitted)
report_dialog = preload("res://scripts/ui/ccs_report_dialog.gd").new(); add_child(report_dialog)
func on_show(payload: Variant = null) -> void:
status.text = ""
leaving = false
leave_button.disabled = false
if typeof(payload) == TYPE_STRING and not str(payload).is_empty(): CCSService.load_attempt(str(payload))
_render(); timer.start()
@@ -101,8 +106,27 @@ func _tick() -> void:
clock.text = "%02d:%02d | Case time %d min" % [floori(float(remaining) / 60.0), remaining % 60, int(CCSService.attempt.get("simulatedMinute", 0))]
if remaining == 0 and not CCSService.is_loading: CCSService.load_attempt(str(CCSService.attempt.get("id", "")))
func leave_case() -> void:
_leave()
func _leave() -> void:
CCSService.abandon(); main.show_screen("ccs_hub")
if leaving or CCSService.attempt.is_empty(): return
leaving = true
leave_button.disabled = true
status.text = "Leaving case..."
CCSService.abandon()
func _on_abandoned() -> void:
if not leaving: return
leaving = false
main.show_screen("selection", "step3")
func _request_failed(message: String) -> void:
if not visible: return
status.text = message
if leaving:
leaving = false
leave_button.disabled = false
func _end_case() -> void:
CCSService.send_command("exit_case" if str(CCSService.attempt.get("state", "")) == "final_orders" else "end_case")
@@ -149,9 +173,9 @@ func _zoom(delta: float) -> void:
CCSService.adjust_text_scale(delta); _apply_text_scale()
func _apply_text_scale() -> void:
var size := int(round(18.0 * CCSService.text_scale))
var font_size := int(round(18.0 * CCSService.text_scale))
for label in [summary, chart]:
label.add_theme_font_size_override("normal_font_size", size); label.add_theme_font_size_override("bold_font_size", size)
label.add_theme_font_size_override("normal_font_size", font_size); label.add_theme_font_size_override("bold_font_size", font_size)
_scale_controls(workspace)
func _scale_controls(node: Node) -> void: