feat(m4c): ShellState.for_character derives vitals+location from the real character

This commit is contained in:
2026-07-15 04:02:37 -05:00
parent f763aa0c31
commit e169885d90
2 changed files with 57 additions and 0 deletions

View File

@@ -34,3 +34,19 @@ static func seed() -> ShellState:
s.location_label = "THE LOWER WARD"
s.dock_open = true
return s
static func for_character(state: GameState, log: CanonLog) -> ShellState:
## The real HUD state for a constructed character. Vitals + location come from
## the character (§2 — code owns them); turn_order/consumables/round_label are
## still seed() placeholders because combat (M5) and inventory (M7) own those.
var s := ShellState.seed() # start from the placeholders, then overwrite what is real
s.vitals = {
"hp": state.sheet.hp,
"hp_max": state.sheet.max_hp(),
"mp": state.sheet.mp,
"mp_max": state.sheet.max_mp(),
"purse_copper": state.purse_copper,
}
s.location_label = log.location.name
return s