feat(ui): complete retail quick-slot input
Port global toolbar use/select/create actions, migrate the collapsed Ctrl-number bindings, and route them through a focused retained-UI controller. Preserve shortcut aliases as aliases across inventory and paperdoll drops with retail's neutral/accept/reject drag states, preventing physical item moves such as unwielding an equipped helmet. Co-Authored-By: Codex <codex@openai.com>
This commit is contained in:
parent
6fcc510d5d
commit
e65119f0c6
24 changed files with 650 additions and 69 deletions
|
|
@ -442,11 +442,11 @@ skipped.
|
|||
|
||||
### 4.1 Wire retail quick-slot input
|
||||
|
||||
- [ ] Add a focused retained-UI input action controller which maps
|
||||
- [x] Add a focused retained-UI input action controller which maps
|
||||
`UseQuickSlot_1..9`, `UseQuickSlot_14..18`, and `CreateShortcut` to
|
||||
`ToolbarController` methods.
|
||||
- [ ] Port use-vs-select semantics from `gmToolbarUI::ListenToGlobalMessage`.
|
||||
- [ ] Keep `GameWindow.OnInputAction` to one delegation seam.
|
||||
- [x] Port use-vs-select semantics from `gmToolbarUI::ListenToGlobalMessage`.
|
||||
- [x] Keep `GameWindow.OnInputAction` to one delegation seam.
|
||||
|
||||
### 4.2 Preserve the exact shortcut model; keep the toolbar object-only
|
||||
|
||||
|
|
@ -473,6 +473,15 @@ skipped.
|
|||
- [ ] On full-stack merge, rekey every matching object shortcut and preserve the
|
||||
non-object fields of its raw `ShortCutData` entry.
|
||||
|
||||
**Wave 4.3 partial implementation (2026-07-11):** drag-over feedback is now an
|
||||
explicit neutral/accept/reject result instead of a Boolean. Inventory and
|
||||
paperdoll enforce retail's `(DropItemFlags & 0xE) == 0` physical-item gate, so a
|
||||
toolbar alias released on either surface only leaves its remove-on-lift shortcut
|
||||
removal in place; it cannot move, unwield, or wield the underlying object. The
|
||||
remaining source-aware occupied-toolbar transaction and raw-field preservation
|
||||
stay in Wave 4.2/4.3. Live gate passed with an equipped helmet: dropping its
|
||||
toolbar alias onto inventory removed only the shortcut and left the helmet worn.
|
||||
|
||||
### 4.4 Finish toolbar controls
|
||||
|
||||
- [ ] Bind all seven retail panel buttons by their DAT panel-id attribute plus combat,
|
||||
|
|
@ -486,13 +495,20 @@ skipped.
|
|||
- [ ] Add item-mana query/cancel state, health query cancellation, and one shared
|
||||
split-quantity owner for the entry, slider, and item drag payload.
|
||||
|
||||
**Partial implementation (2026-07-11):** the four stance-specific combat
|
||||
**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
|
||||
`ToolbarInputController` maps semantic actions; `ToolbarController` owns the
|
||||
retail target-before-use/select ordering and auto-slot eligibility; and
|
||||
`GameWindow.OnInputAction` has one retained-runtime delegation seam. Keybinding
|
||||
schema v2 migrates only the exact old default Ctrl+number bindings, preserving
|
||||
custom user bindings. The four stance-specific combat
|
||||
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, quick slots, and selected
|
||||
object residuals remain in this wave.
|
||||
`CombatState`. Use, Examine, remaining panel buttons, raw shortcut preservation,
|
||||
drag/drop edge cases, and selected-object residuals 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