Merge branch 'feature/settings-retail' — Phase L.0 Settings interface
Lands the full retail-style Settings interface developed in the .worktrees/settings-retail worktree. 17 commits delivering: == Phase L.0 — Settings interface ==7665cdftabbed Settings shell + IPanelRenderer tab API extension382f0adDisplay tab + settings.json persistence layer53b1878Audio tab + live volume sliders driving OpenAL engineb7165e5Gameplay tab — 14 retail CharacterOption-derived toggles356b5f2Chat tab — channel filters + display prefs + font slider73749d1Character tab — per-toon settings; Phase L.0 completefc1e193wire Display GL knobs + per-toon Character key4c75cedchat Copy mode — read-only multi-line for select + Ctrl+C == Drag-fix iteration ==6273255first attempt at title-bar-only drag (Begin-level absorber)2818fccscope drag absorber to BeginChild (fixed Settings tabs)df9f2fdwrap chat panel body in outer BeginChild (fixed chat drag) == Pre-merge code review fixes ==944a036rescue commit — orphaned FramebufferResize + ResetPanelLayout (working-tree changes that never got committed in the cwd shenanigans during earlier iteration)a37ebdeapply persisted Display + Audio settings without devtools gate (settings are runtime state, not devtools state); hide Music + Ambient sliders that were inert (R5 MIDI not shipped)23aa017docs/plans/roadmap shipped table updated for K + L.0 == Net delivered == · 6-tab F11 Settings panel: Keybinds (existing) + Display + Audio + Gameplay + Chat + Character · settings.json at %LOCALAPPDATA%\acdream\ — five sections coexist non-destructively, per-toon Character keying · Display: Resolution / Fullscreen / VSync / FOV / ShowFps live-wired to Silk.NET window + camera FovY + title-bar perf string · Audio: Master + SFX volume live-driving OpenAL engine · Gameplay/Chat/Character: persist for forthcoming server-sync wiring · Chat panel Copy mode (Ctrl+C selectable text) · Title-bar-only window drag (BeginChild absorber) · FramebufferResize handler — GL viewport + camera aspect + panel layout stay in sync on window resize · "Reset window layout" View menu item · IPanelRenderer extensions: tab API + TextMultilineReadOnly dotnet build green (0 warnings); dotnet test 1,309 / 1,309 green (243 Core.Net + 393 UI.Abstractions + 673 Core; +87 net new tests since fork). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
commit
a2e0bb5e2f
23 changed files with 3101 additions and 60 deletions
|
|
@ -54,6 +54,8 @@
|
|||
| I.5 | Holtburger inbound chat parity + Windows-1252 codec — `EmoteText (0x01E0)`, `SoulEmote (0x01E2)`, `ServerMessage (0xF7E0)`, `PlayerKilled (0x019E)` parsers + `WeenieError` routing through `GameEventWiring`. Global string codec switch from `Encoding.ASCII` to `Encoding.GetEncoding(1252)` so accented names round-trip per retail + holtburger. | Tests ✓ |
|
||||
| I.6 | TurbineChat codec + `ChatChannelInfo` — full `0xF7DE` codec with three payload variants (`EventSendToRoom`, `RequestSendToRoomById`, `Response`), UTF-16LE strings with variable-length prefix, `SetTurbineChatChannels (0x0295)` parser, unified `ChatChannelInfo` (Legacy + Turbine variants), `TurbineChatState`. **ACE doesn't host a TurbineChat server — codec is ready when retail-emulating servers exist.** | Tests ✓ |
|
||||
| I.7 | `CombatChatTranslator` — retail-faithful combat-text formatters into `ChatLog` ("You hit drudge for 50 slashing damage (87%)"). Subscribes to `CombatState`'s `DamageTaken` / `DamageDealtAccepted` / `EvadedIncoming` / `MissedOutgoing` / `AttackDone` / `KillLanded`; templates ported verbatim from holtburger `panels/chat.rs:221-308`. | Tests ✓ |
|
||||
| K | Input architecture — `Action` enum, `KeyChord`, `KeyBindings`, multicast `InputDispatcher` with scope-stack + modal capture, retail-default keymap (152 bindings), `keybinds.json` persistence, F11 Settings panel with click-to-rebind + conflict detection, main menu bar + View menu | Live ✓ |
|
||||
| L.0 | Full retail-style Settings interface — F11 tabbed panel with 6 tabs (Keybinds + Display + Audio + Gameplay + Chat + Character). `settings.json` at `%LOCALAPPDATA%\acdream\`, per-toon `Character` keying (swapped on EnterWorld). Display GL knobs (Resolution / Fullscreen / VSync / FOV / ShowFps) + Audio (Master / SFX) live-wired; Gameplay / Chat / Character settings persist for server-sync wiring later. Tab API extension to `IPanelRenderer`; chat Copy mode (read-only multi-line); per-panel layout reset; FramebufferResize handler keeps GL viewport + camera aspect + panel positions in sync. | Live ✓ |
|
||||
|
||||
Plus polish that doesn't get its own phase number:
|
||||
- FlyCamera default speed lowered + Shift-to-boost
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue