refactor(settings): own two-phase runtime settings
Move pre-window loading, startup application, live settings mutation, toon context, quality reapply, and SettingsVM loans behind one RuntimeSettingsController. Preserve retail command behavior, ordered target publication, draft semantics, and retryable failure convergence while removing duplicate GameWindow state and feature bodies. Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
parent
4eae9b4f5a
commit
fec0d94148
24 changed files with 2379 additions and 599 deletions
|
|
@ -34,6 +34,7 @@ after Slice 7 draw-frame cutover 4,666 lines / 196 fields / 70 method
|
|||
after Slice 8 checkpoint D 4,330 lines / 192 fields / 67 methods
|
||||
after Slice 8 checkpoint E 4,266 lines / 194 fields / 65 methods
|
||||
after Slice 8 checkpoint F 4,057 lines / 198 fields / 54 methods
|
||||
after Slice 8 checkpoint G 3,663 lines / 162 fields / 37 methods
|
||||
```
|
||||
|
||||
`GameWindow` is the single object that:
|
||||
|
|
@ -195,8 +196,9 @@ documentation, not an exhaustive allowlist):
|
|||
shared root and sibling controls.
|
||||
- `DevToolsFramePresenter -> DevToolsPanelSet -> panel/ViewModel bindings` for
|
||||
the optional developer UI.
|
||||
- `WorldRenderFrameBuilder -> RuntimeWorldFrameSettingsPreview -> SettingsVM`
|
||||
for the live settings draft preview applied before world drawing.
|
||||
- `WorldRenderFrameBuilder -> RuntimeWorldFrameSettingsPreview ->
|
||||
IRuntimeSettingsPreviewSource -> RuntimeSettingsController -> optional
|
||||
SettingsVM` for the live settings draft preview applied before world drawing.
|
||||
- `LocalPlayerPortalViewport -> LocalPlayerTeleportController ->
|
||||
GameplayInputFrameController -> InputDispatcher.Fired -> GameWindow` for the
|
||||
canonical portal/input lifetime and the host's input-action subscription.
|
||||
|
|
@ -692,7 +694,7 @@ slices. `OnClosing` delegates to the existing retryable shutdown transaction.
|
|||
Silk callbacks become narrow calls into the input, update, render, resize,
|
||||
focus, and shutdown owners.
|
||||
|
||||
Checkpoints E and F are complete. `CameraPointerInputController` owns raw pointer,
|
||||
Checkpoints E, F, and G are complete. `CameraPointerInputController` owns raw pointer,
|
||||
camera cursor/focus/scroll/sensitivity behavior; `FramebufferResizeController`
|
||||
alone publishes physical framebuffer changes. All Silk, dispatcher, retained
|
||||
UI, and optional devtools device edges are reversible, transactional, and
|
||||
|
|
@ -705,8 +707,18 @@ subscriber and preserves the accepted input-priority graph. Focused combat,
|
|||
diagnostic, and general command owners replace the remaining window command
|
||||
bodies. The retained-root item-drop edge has one reversible owner, while its
|
||||
deferred toolbar targets become inert before session retirement. `GameWindow`
|
||||
is now 4,057 raw lines / 198 fields / 54 methods. Checkpoints G–L remain
|
||||
active, with two-phase runtime settings next.
|
||||
now has no settings-store construction, duplicate settings loads, persisted
|
||||
settings mirrors, or display/quality feature bodies. `RuntimeSettingsController`
|
||||
is constructed before `Window.Create`, owns the one immutable startup snapshot
|
||||
and current/toon settings state, applies startup display/pacing/FOV/audio once,
|
||||
then borrows late-bound runtime targets without replay. Saved FOV now applies at
|
||||
startup even when devtools are disabled; this is a deliberate correction of the
|
||||
old accidental SettingsVM gate. The controller also preserves unrelated unsaved
|
||||
Gameplay draft fields when combat preferences change. `GameWindow` is now 3,663
|
||||
raw lines / 162 fields / 37 methods. Checkpoints H–L remain active, with explicit
|
||||
resource ownership and frame slots next. The Checkpoint G production App build
|
||||
is warning-free, all three corrected-diff reviews are clean, and the complete
|
||||
Release suite passes 7,553 tests / 5 intentional skips.
|
||||
|
||||
### 4.4 Exit criteria
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue