feat(ui): drive toolbar use state from selection
Port the retail selected-object availability predicate into Core and project it through the shared interaction owner. The imported hand now follows canonical selection/object notices, keeps weapon and targeted-tool activation on the existing wield/use cursor paths, and ghosts empty or explicitly unusable selections per the connected UX requirement. Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
parent
0134122c28
commit
60387668d0
11 changed files with 269 additions and 16 deletions
|
|
@ -579,8 +579,15 @@ HandleSelectionChanged(): // 0x004BF380
|
|||
```
|
||||
|
||||
The exact item-type mask in the use-button ghost test is visible as separate
|
||||
`InqType() & 4`, `& 2`, and `& 8` checks. Preserve those numeric tests until the
|
||||
retail `ITEM_TYPE` names are pinned.
|
||||
`InqType() & 4`, `& 2`, and `& 8` checks. The verbatim `ITEM_TYPE` enum now pins
|
||||
those values as Clothing, Armor, and Jewelry respectively.
|
||||
|
||||
**2026-07-23 connected requirement:** acdream intentionally ghosts the hand
|
||||
when the selection is empty. Retail instead sets state 1 and lets a click enter
|
||||
generic `TARGET_MODE_USE` (see `ListenToElementMessage @ 0x004BEE90`). Selected
|
||||
objects still use the exact predicate above and still activate through the
|
||||
ordinary `ItemHolder::UseObject` path. The empty-selection difference is
|
||||
registered as AP-122.
|
||||
|
||||
### 5.3 Meter notices
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue