Document pulse-based simulation timing

This commit is contained in:
2026-05-13 23:25:18 +02:00
parent 4a3fd37ab4
commit 7777800a5d
2 changed files with 47 additions and 27 deletions

View File

@@ -166,7 +166,7 @@ Primary controls:
- visible hazards with safe/caution/critical bands
- forecast warnings
- `ActionBar`
- contextual action buttons: move, interact, repair, remedy, heat shield, wait, activate reactor
- contextual action buttons: move, interact, repair, remedy, heat shield, activate reactor
- disabled buttons must show why the action is unavailable
- `InventoryPanel`
- fuel neutralizer count
@@ -176,14 +176,23 @@ Primary controls:
Behavior:
- Selection and inspection are quick actions and must not advance the simulation.
- Movement is a quick action and must update robot position without advancing the turn.
- Interact, repair, remedy, heat shield, wait, and activate reactor are lengthy actions and must resolve one simulation step when accepted.
- Selection and inspection are quick actions and must not trigger a pulse.
- Movement is a quick action and must update robot position without triggering a pulse.
- Interact, repair, remedy, and heat shield are environment-changing actions and must trigger one animated pulse when accepted.
- Activate reactor must be visually prominent when ready and should resolve immediately without requiring a wait or extra pulse.
- Invalid actions should produce a short refusal message and not mutate level state.
- When the level state becomes `Lost`, show `LoseOverlay`.
- When the level state becomes `Won`, show `WinOverlay`.
- When the reactor is ready, make `Activate Reactor` visually prominent but keep other valid actions available.
Pulse playback behavior:
- During a pulse, animate the configured steps as one short cascade of hazard motion, leak growth, quenching, ignition, shorts, and readiness updates.
- Disable conflicting action commands while pulse playback is running so the player cannot queue hidden actions into an unresolved environment state.
- Present the final post-pulse state as the next decision point.
- Do not make pulse length vary by action type, forecast outcome, or danger level.
- Do not expose a normal campaign fast-forward loop; the player goal is to solve the cascade and activate the reactor as soon as a pulse leaves its needs fulfilled.
### LoseOverlay.tscn
Purpose: immediate failure response while preserving context.
@@ -293,7 +302,7 @@ Controls:
Behavior:
- Keep tutorial text focused on action economy, hazards, forecasts, remedies, and reactor activation.
- Keep tutorial text focused on action economy, pulses, hazards, forecasts, remedies, and reactor activation.
- Tutorial level can reuse `LevelScreen` with a tutorial mode flag and guided prompts.
## Reusable Controls
@@ -302,7 +311,7 @@ Behavior:
- `StateBadge`: color-coded label for `Stable`, `Caution`, `Critical`, `Ready`, `Lost`, and `Won`.
- `LevelHeader`: level metadata, global state, and campaign progress.
- `CellInspector`: selected cell details, visible hazards, prop state, underground details when available.
- `ForecastList`: ordered warnings from soonest to latest turn.
- `ForecastList`: ordered warnings from soonest to latest pulse.
- `InventoryStrip`: remedy and heat shield counts.
- `OutcomeOverlay`: shared base layout for win and loss overlays.
- `ConfirmDialog`: save overwrite, abandon run, and return-to-menu confirmations.