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
|
|
@ -25,7 +25,7 @@ audit.
|
|||
resize behind symmetric named subscriptions.
|
||||
- [x] F — extract the sole gameplay input-action router plus focused combat and
|
||||
diagnostic command owners.
|
||||
- [ ] G — extract two-phase persisted settings/display/quality ownership.
|
||||
- [x] G — extract two-phase persisted settings/display/quality ownership.
|
||||
- [ ] H — give terrain atlas, sky shader, retained `UiHost`, and both frame roots
|
||||
explicit single ownership and transfer seams.
|
||||
- [ ] I — group `OnLoad` into small ordered, fakeable composition phases with
|
||||
|
|
@ -557,6 +557,29 @@ fields / 54 methods.
|
|||
- Preserve restart-required quality behavior and test transitions/previews
|
||||
without requiring GL.
|
||||
|
||||
**Implementation result:** one pre-window `RuntimeSettingsController` now owns
|
||||
the concrete settings store, the immutable startup snapshot, current Display /
|
||||
Audio / Gameplay / Chat / Character values, the active toon, resolved quality,
|
||||
and the optional Settings draft. Startup applies pacing, window state, saved
|
||||
FOV, and audio in order exactly once; a failed later substep retries without
|
||||
replaying a successful earlier substep. Complete runtime targets bind only
|
||||
after their borrowers exist and binding performs no replay. Display saves keep
|
||||
the persistence → live window → snapshot → quality order; quality applies
|
||||
alpha-to-coverage → anisotropy → render range → streaming → completion budget.
|
||||
Combat preference changes merge only their three fields into a live draft, so
|
||||
unrelated unsaved Gameplay edits survive. Saved FOV now applies without
|
||||
devtools, correcting the old accidental SettingsVM gate. `/framerate` retains
|
||||
the named-retail live toggle/notice and keeps acdream's shipped cross-launch
|
||||
persistence as documented AP-121. UI-lock convergence requires target,
|
||||
persistence, and Settings baseline publication; a failed substep keeps the
|
||||
same-value command retryable. `GameWindow` is 3,663 raw lines / 162 fields / 37
|
||||
methods. Thirty-five focused App settings/boundary tests, all 43
|
||||
`SettingsVMTests`, the UI Abstractions Release suite (534 pass), and the App
|
||||
Release suite (3,183 pass / 3 intentional skips) pass. All three independent
|
||||
corrected-diff reviews are clean; the production App Release build has zero
|
||||
warnings/errors, and the complete Release suite passes 7,553 tests / 5
|
||||
intentional skips (17 existing test-project warnings remain tracked by #228).
|
||||
|
||||
### H — explicit single resource ownership and frame slots
|
||||
|
||||
- Publish TerrainAtlas and the dedicated sky Shader as separate lifetime roots;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue