feat(ui): finish retail toolbar controls
Discover all seven panel launchers from their DAT panel-id attributes, route mounted panels through event-driven retained window state, and ghost unavailable panels. Port Use and Examine selection/target behavior with exact Appraise dispatch and retail cursor modes. Co-Authored-By: Codex <codex@openai.com>
This commit is contained in:
parent
21fefce0e0
commit
d3d1c895a0
19 changed files with 478 additions and 72 deletions
|
|
@ -515,10 +515,10 @@ their live action gate remains pending. The inventory-button gate remains pendin
|
|||
|
||||
### 4.4 Finish toolbar controls
|
||||
|
||||
- [ ] Bind all seven retail panel buttons by their DAT panel-id attribute plus combat,
|
||||
- [x] Bind all seven retail panel buttons by their DAT panel-id attribute plus combat,
|
||||
Use, and Examine actions; dispatch panel buttons through the window registry,
|
||||
ghosting unavailable panels rather than constructing placeholders.
|
||||
- [ ] Make open/closed states event-driven from `RetailWindowManager`.
|
||||
- [x] Make open/closed states event-driven from `RetailWindowManager`.
|
||||
- [x] Complete selected-object item mana and port `RecvNotice_UpdateItemMana`.
|
||||
- [x] Complete formatted stack count, stack entry and split slider, the applicable
|
||||
`RecvNotice_SplitStack` activation behavior, and `HandleSelectionChanged` stack
|
||||
|
|
@ -569,6 +569,17 @@ friendly NPCs and rejecting attackable non-creatures. AP-46 is retired; automate
|
|||
parser/model/policy conformance is green. The world/radar matrix passed live, and the
|
||||
paperdoll re-gate passed after its separate exact DAT body-map/upper-item route landed.
|
||||
|
||||
**Wave 4.4d implementation (2026-07-11; live gate pending):** `ToolbarController`
|
||||
discovers all seven authored launcher buttons and reads their panel IDs from DAT enum
|
||||
attribute `0x10000029`, matching `gmToolbarUI::PostInit @ 0x004BEA80`. Inventory and
|
||||
Character dispatch through the retained window registry; the five panels not yet mounted
|
||||
are ghosted rather than represented by placeholders. `RetailWindowManager` visibility
|
||||
events now drive state 6/1 (Highlight/Normal), including close-button and persistence
|
||||
transitions, replacing mutation-site synchronization. Use and Examine dispatch the current
|
||||
selection immediately or enter their one-shot retail target modes; Examine sends the exact
|
||||
Appraise request and both modes use the retail global cursor catalog. The warning-free
|
||||
App build and full 4,747-pass / 5-skip Release suite are green.
|
||||
|
||||
**Wave 4.1 implementation (2026-07-11):** bare `1..9` now use slots 0..8,
|
||||
Ctrl+`1..9` selects them, Alt+`5..9` uses slots 13..17, and `0` creates a
|
||||
shortcut to the selected owned/eligible object in the first empty slot. A focused
|
||||
|
|
@ -581,8 +592,8 @@ indicator buttons `0x10000192..0x10000195` now all dispatch one injected combat
|
|||
toggle command. The key binding and retained toolbar therefore converge on
|
||||
`GameWindow.ToggleLiveCombatMode`, matching `gmToolbarUI::ListenToElementMessage
|
||||
@ 0x004BEE90`; the visible indicator continues to update from authoritative
|
||||
`CombatState`. Use, Examine, remaining panel buttons, raw shortcut preservation,
|
||||
drag/drop edge cases, and selected-object residuals remain in this wave.
|
||||
`CombatState`. Raw shortcut preservation, drag/drop edge cases, and the toolbar
|
||||
ammo-number display remain in this wave.
|
||||
|
||||
**Oracles:** `gmToolbarUI @ 0x004BD0C0..0x004BF380`,
|
||||
`UIElement_UIItem::SetShortcutNum`, shortcut wire builders.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue