Ship the 0.8.0 first-hour and campaign milestone
Add the campaign shell, pause-safe checkpoint resume, post-shift campaign continue, confirmed campaign reset, difficulty presets, searchable Help, content-matrix validation, recovery events, contextual dialogue, policy/debrief context and eligible-event previews. Extend persistence with atomic separate files and add campaign/checkpoint/tutorial smokes. Headless 247/247, Python 94/94, tutorial/campaign/session/scenario smokes green.
This commit is contained in:
1 parent
86332cd401
commit
aa51ee331e
38 files changed
+1361
-1144
No files matched your search
@@ -123,6 +123,23 @@ func tick(delta: float) -> void:
|
||||
if event_bus:
|
||||
event_bus.responder_arrived.emit(call)
|
||||
|
||||
func snapshot() -> Dictionary:
|
||||
return {
|
||||
"battery": battery,
|
||||
"emergency_cooldown_remaining": emergency_cooldown_remaining,
|
||||
"accepting_calls": accepting_calls,
|
||||
"pending_calls": pending_calls.duplicate(true),
|
||||
}
|
||||
|
||||
func restore(data: Dictionary) -> void:
|
||||
battery = clampf(float(data.get("battery", 100.0)), 0.0, max_battery)
|
||||
emergency_cooldown_remaining = maxf(0.0, float(data.get("emergency_cooldown_remaining", 0.0)))
|
||||
accepting_calls = bool(data.get("accepting_calls", true))
|
||||
pending_calls.clear()
|
||||
for call in data.get("pending_calls", []):
|
||||
if call is Dictionary:
|
||||
pending_calls.append((call as Dictionary).duplicate(true))
|
||||
|
||||
## Determine the responder's resolution outcome for a call. The responder
|
||||
## commands, restrains, evacuates, or arrests based on the reported danger
|
||||
## level and whether a weapon was seen (PLAN.md: Level 5 Emergency Response).
|
||||
|
||||
Reference in new issue
Block a user