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:
Erik 2026-07-11 12:11:53 +02:00
parent 21fefce0e0
commit d3d1c895a0
19 changed files with 478 additions and 72 deletions

View file

@ -1125,8 +1125,10 @@ implementation patch.
3. `ToolbarController.HandleDropRelease` uses the shortcut-source restoration
branch for every source. Fresh inventory drops need the cyclic-right empty-slot
branch.
4. Toolbar input actions, seven panel buttons, Use, Examine, mana, and stack
controls are not fully wired.
4. **Resolved 2026-07-11:** toolbar input actions, all seven DAT-discovered panel
buttons, Use, Examine, selected-item mana, and stack controls are wired. Mounted
panel state follows typed retained-window visibility events; unavailable panels
are ghosted. The separate ammo-number display remains tracked as AP-101.
5. `ItemInteractionController.ActivateItem` is a useful orchestration seam, but it
is not a faithful `UseObject` port: it omits ready/vendor/trade/confirmations,
the complete `DetermineUseResult` classification, container post-actions,