feat(shell): ShellState + TurnEntry HUD state model

This commit is contained in:
2026-07-11 08:46:56 -05:00
parent 400445f312
commit c4aa74da5a
6 changed files with 103 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
class_name ShellState
extends RefCounted
## The HUD state the Main Window shell owns (§2: state). Seed values mirror mock
## 2a; later systems (combat vitals, inventory consumables) become the writers.
## No Luck/LCK value lives here — it is never surfaced (§7).
var vitals: Dictionary = {"hp": 0, "hp_max": 0, "mp": 0, "mp_max": 0, "gold": 0}
var turn_order: Array[TurnEntry] = []
var consumables: Array = []
var round_label: String = ""
var location_label: String = ""
var dock_open: bool = true
func toggle_dock() -> bool:
dock_open = not dock_open
return dock_open
static func seed() -> ShellState:
var s := ShellState.new()
s.vitals = {"hp": 42, "hp_max": 60, "mp": 18, "mp_max": 30, "gold": 1240}
s.turn_order = [
TurnEntry.new("EL", 17, &"you", true, false),
TurnEntry.new("DW", 12, &"ally"),
TurnEntry.new("HU", 9, &"ally"),
TurnEntry.new("GK", 0, &"enemy", false, true),
]
var labels := ["Salve", "Draught", "Bomb", "Antidote", "Ration", "Torch", "", ""]
s.consumables = []
for i in range(labels.size()):
s.consumables.append({"hotkey": i + 1, "label": labels[i]})
s.round_label = "ROUND 4"
s.location_label = "THE LOWER WARD"
s.dock_open = true
return s

View File

@@ -0,0 +1 @@
uid://f8vix48wmisv

View File

@@ -0,0 +1,20 @@
class_name TurnEntry
extends RefCounted
## One combatant in the turn-order rail (§2: state). Seed/placeholder now; the
## combat turn manager (M5) becomes its writer. `side` colours the rail:
## &"you" gold, &"ally" teal-muted, &"enemy" blood.
var initials: String
var initiative: int
var side: StringName
var is_active: bool
var is_downed: bool
func _init(p_initials: String, p_initiative: int, p_side: StringName,
p_is_active := false, p_is_downed := false) -> void:
initials = p_initials
initiative = p_initiative
side = p_side
is_active = p_is_active
is_downed = p_is_downed

View File

@@ -0,0 +1 @@
uid://toetic2iu7b8