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:
Erik 2026-07-11 08:59:49 +02:00
parent 6fcc510d5d
commit e65119f0c6
24 changed files with 650 additions and 69 deletions

View file

@ -8,12 +8,10 @@ namespace AcDream.UI.Abstractions.Input;
/// debug bindings that have no retail equivalent.
///
/// <para>
/// K.1a defines the enum but only the existing acdream-current chords
/// resolve to actions; K.1c flips the bindings table to the full retail
/// preset. Several actions in this enum (<c>UseQuickSlot_*</c>,
/// <c>Combat*</c>, <c>UseSpellSlot_*</c>) have NO subscribers in K.1 —
/// the chord fires the event but nothing acts on it. Phase L panels
/// will subscribe.
/// K.1a defined the enum and K.1c flipped the bindings table to the full
/// retail preset. Runtime controllers subscribe by subsystem; actions whose
/// owning panel has not landed yet (for example <c>UseSpellSlot_*</c>) may
/// intentionally remain undispatched.
/// </para>
/// </summary>
public enum InputAction
@ -142,12 +140,21 @@ public enum InputAction
UseQuickSlot_7,
UseQuickSlot_8,
UseQuickSlot_9,
SelectQuickSlot_1,
SelectQuickSlot_2,
SelectQuickSlot_3,
SelectQuickSlot_4,
SelectQuickSlot_5,
SelectQuickSlot_6,
SelectQuickSlot_7,
SelectQuickSlot_8,
SelectQuickSlot_9,
UseQuickSlot_14,
UseQuickSlot_15,
UseQuickSlot_16,
UseQuickSlot_17,
UseQuickSlot_18,
/// <summary>Drop-target shortcut creation (retail 0 / drag-drop).</summary>
/// <summary>Create a toolbar shortcut to the selected object (retail 0).</summary>
CreateShortcut,
// ── Chat ──────────────────────────────────────────────