49 lines
2.3 KiB
GDScript
49 lines
2.3 KiB
GDScript
extends VBoxContainer
|
|
|
|
const Style := preload("res://scripts/ui/ui_style.gd")
|
|
var main: Control
|
|
var status: Label
|
|
var start_button: Button
|
|
|
|
func _ready() -> void:
|
|
set_anchors_preset(Control.PRESET_FULL_RECT)
|
|
add_theme_constant_override("separation", 14)
|
|
var back := Button.new(); back.text = "< Step 3 modes"; back.size_flags_horizontal = Control.SIZE_SHRINK_BEGIN
|
|
Style.style_chip(back, Style.CYAN); back.pressed.connect(func(): main.show_screen("selection", "step3")); add_child(back)
|
|
var title := Label.new(); title.text = "CCS Cases"; Style.set_label(title, 34, Style.TEXT); add_child(title)
|
|
var note := Label.new(); note.text = "Manage a simulated patient through examination, orders, treatment, location, and time."; Style.set_label(note, 16, Style.MUTED); add_child(note)
|
|
status = Label.new(); Style.set_label(status, 15, Style.CYAN); add_child(status)
|
|
start_button = Button.new()
|
|
start_button.text = "Start Timed Case"
|
|
start_button.custom_minimum_size = Vector2(280, 64)
|
|
start_button.size_flags_horizontal = Control.SIZE_SHRINK_BEGIN
|
|
Style.style_primary_button(start_button)
|
|
start_button.pressed.connect(_start)
|
|
add_child(start_button)
|
|
var spacer := Control.new(); spacer.size_flags_vertical = Control.SIZE_EXPAND_FILL; add_child(spacer)
|
|
var history := Button.new(); history.text = "Case History"; history.size_flags_horizontal = Control.SIZE_SHRINK_BEGIN
|
|
Style.style_chip(history, Style.CYAN); history.pressed.connect(func(): main.show_screen("ccs_history")); add_child(history)
|
|
CCSService.cases_changed.connect(_render)
|
|
CCSService.attempt_changed.connect(_attempt_ready)
|
|
CCSService.request_failed.connect(_on_request_failed)
|
|
|
|
func on_show(_payload: Variant = null) -> void:
|
|
status.text = "Loading cases..."
|
|
CCSService.load_cases()
|
|
|
|
func _render() -> void:
|
|
status.text = "No published cases are available yet." if CCSService.cases.is_empty() else "%d cases available" % CCSService.cases.size()
|
|
start_button.disabled = CCSService.cases.is_empty()
|
|
|
|
func _start() -> void:
|
|
status.text = "Starting case..."
|
|
start_button.disabled = true
|
|
CCSService.create_attempt("", "timed")
|
|
|
|
func _attempt_ready() -> void:
|
|
if visible and not CCSService.attempt.is_empty(): main.show_screen("ccs_player")
|
|
|
|
func _on_request_failed(message: String) -> void:
|
|
status.text = message
|
|
start_button.disabled = CCSService.cases.is_empty()
|