namespace AcDream.UI.Abstractions.Input;
///
/// High-level input actions. Each name matches an entry in the retail
/// acclient.keymap "Bindings" header (see
/// docs/research/named-retail/retail-default.keymap.txt). The
/// Acdream* entries at the bottom are extensions for current
/// debug bindings that have no retail equivalent.
///
///
/// 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 UseSpellSlot_*) may
/// intentionally remain undispatched.
///
///
public enum InputAction
{
/// Sentinel — no action. Reserved for "unbound".
None = 0,
// ── MovementCommands ──────────────────────────────────
/// Move forward (run by default; walk if active).
MovementForward,
/// Move backward.
MovementBackup,
/// Turn the character to the left.
MovementTurnLeft,
/// Turn the character to the right.
MovementTurnRight,
/// Strafe (sidestep) to the left.
MovementStrafeLeft,
/// Strafe (sidestep) to the right.
MovementStrafeRight,
/// Hold-modifier — toggles forward motion to walk while held (retail Shift).
MovementWalkMode,
/// Toggle autorun on/off (retail Q).
MovementRunLock,
/// Charged jump — hold to power, release to launch.
MovementJump,
/// Cancel current motion / return to ready stance.
MovementStop,
/// Ready posture / sheathe-unsheathe (retail Y).
Ready,
/// Sit posture (retail G).
Sitting,
/// Crouch posture (retail H).
Crouch,
/// Sleep posture (retail B).
Sleeping,
// ── ItemSelectionCommands ─────────────────────────────
/// Pick up the selected item.
SelectionPickUp,
/// Split a stack of the selected item.
SelectionSplitStack,
/// Cycle back to the previous selection.
SelectionPreviousSelection,
/// Closest compass-tracked item.
SelectionClosestCompassItem,
/// Previous compass-tracked item.
SelectionPreviousCompassItem,
/// Next compass-tracked item.
SelectionNextCompassItem,
/// Closest item in radius.
SelectionClosestItem,
/// Previous item in radius.
SelectionPreviousItem,
/// Next item in radius.
SelectionNextItem,
/// Closest monster.
SelectionClosestMonster,
/// Previous monster.
SelectionPreviousMonster,
/// Next monster.
SelectionNextMonster,
/// Most-recent attacker (for retaliation).
SelectionLastAttacker,
/// Closest player.
SelectionClosestPlayer,
/// Previous player.
SelectionPreviousPlayer,
/// Next player.
SelectionNextPlayer,
/// Previous fellow.
SelectionPreviousFellow,
/// Next fellow.
SelectionNextFellow,
/// Examine (Appraise) the current selection.
SelectionExamine,
// ── UICommands ────────────────────────────────────────
/// Use the selected item / interact (retail R).
UseSelected,
/// Cancel the topmost UI / clear selection / open log-out menu.
EscapeKey,
/// Log out of the game (retail Shift+Esc).
LOGOUT,
/// Toggle the help / control reference panel (retail F1).
ToggleHelp,
/// Toggle the plugin manager panel (retail F1+Shift+Ctrl).
TogglePluginManager,
/// Toggle the allegiance panel (retail F3).
ToggleAllegiancePanel,
/// Toggle the fellowship panel (retail F4).
ToggleFellowshipPanel,
/// Toggle the spellbook panel (retail F5).
ToggleSpellbookPanel,
/// Toggle the spell-components panel (retail F6).
ToggleSpellComponentsPanel,
/// Toggle the attributes panel (retail F8).
ToggleAttributesPanel,
/// Toggle the skills panel (retail F9).
ToggleSkillsPanel,
/// Toggle the world / map panel (retail F10).
ToggleWorldPanel,
/// Toggle the options / settings panel (retail F11) — opens
/// our SettingsPanel in K.3.
ToggleOptionsPanel,
/// Toggle the inventory panel (retail F12).
ToggleInventoryPanel,
/// Toggle floating chat window 1 (retail Alt+1).
ToggleFloatingChatWindow1,
/// Toggle floating chat window 2.
ToggleFloatingChatWindow2,
/// Toggle floating chat window 3.
ToggleFloatingChatWindow3,
/// Toggle floating chat window 4.
ToggleFloatingChatWindow4,
/// Capture a screenshot (retail PrintScreen).
CaptureScreenshot,
// ── QuickslotCommands ─────────────────────────────────
UseQuickSlot_1,
UseQuickSlot_2,
UseQuickSlot_3,
UseQuickSlot_4,
UseQuickSlot_5,
UseQuickSlot_6,
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,
/// Create a toolbar shortcut to the selected object (retail 0).
CreateShortcut,
// ── Chat ──────────────────────────────────────────────
/// Focus the chat input field (retail Tab).
ToggleChatEntry,
/// Send the current chat-input contents (retail Return).
EnterChatMode,
// ── Combat ────────────────────────────────────────────
/// Toggle combat-stance on/off (retail Grave / `).
CombatToggleCombat,
// Mode-dependent (dormant in K — Phase L lights them up)
CombatDecreaseAttackPower,
CombatIncreaseAttackPower,
CombatLowAttack,
CombatMediumAttack,
CombatHighAttack,
CombatDecreaseMissileAccuracy,
CombatIncreaseMissileAccuracy,
CombatAimLow,
CombatAimMedium,
CombatAimHigh,
CombatPrevSpellTab,
CombatNextSpellTab,
CombatPrevSpell,
CombatCastCurrentSpell,
CombatNextSpell,
CombatFirstSpellTab,
CombatLastSpellTab,
CombatFirstSpell,
CombatLastSpell,
UseSpellSlot_1,
UseSpellSlot_2,
UseSpellSlot_3,
UseSpellSlot_4,
UseSpellSlot_5,
UseSpellSlot_6,
UseSpellSlot_7,
UseSpellSlot_8,
UseSpellSlot_9,
// ── Emotes ────────────────────────────────────────────
/// Cry emote (retail U).
Cry,
/// Laugh emote (retail I).
Laugh,
/// Cheer emote — celebratory jump (retail O).
Cheer,
/// Wave emote (retail J).
Wave,
/// Point emote (retail K).
PointState,
// ── Camera ────────────────────────────────────────────
/// Toggle alternate camera mode (retail F2 / Numpad-/).
CameraActivateAlternateMode,
/// Hold-MMB instant mouse-look — hardcoded behavior in K.2.
CameraInstantMouseLook,
CameraRotateLeft,
CameraRotateRight,
CameraRotateUp,
CameraRotateDown,
CameraMoveToward,
CameraMoveAway,
CameraViewDefault,
CameraViewFirstPerson,
CameraViewLookDown,
CameraViewMapMode,
// ── Scroll ────────────────────────────────────────────
/// Scroll up — wheel up or Ctrl+Up.
ScrollUp,
/// Scroll down — wheel down or Ctrl+Down.
ScrollDown,
// ── Mouse selection ───────────────────────────────────
/// Single left-click select.
SelectLeft,
/// Single right-click select.
SelectRight,
/// Single middle-click select.
SelectMid,
/// Double left-click select.
SelectDblLeft,
/// Double right-click select.
SelectDblRight,
/// Double middle-click select.
SelectDblMid,
// ── Acdream debug actions (existing F-key behavior) ──
/// F1 toggles entire DebugPanel visibility (acdream-only).
AcdreamToggleDebugPanel,
/// F2 toggles collision wireframes.
AcdreamToggleCollisionWires,
/// F3 dumps player + nearby entities to console.
AcdreamDumpNearby,
/// F7 cycles time of day.
AcdreamCycleTimeOfDay,
/// F8 decreases mouse sensitivity.
AcdreamSensitivityDown,
/// F9 increases mouse sensitivity.
AcdreamSensitivityUp,
/// F10 cycles weather.
AcdreamCycleWeather,
/// F (existing) toggles between fly camera and orbit/chase mode.
AcdreamToggleFlyMode,
/// Tab — currently toggles fly↔player mode (will be reassigned to ToggleChatEntry in K.1c).
AcdreamTogglePlayerMode,
/// Hold-RMB chase-camera orbit (debug-only, not user-rebindable).
/// Camera orbits around the player while held; never drives character yaw.
AcdreamRmbOrbitHold,
/// Fly-camera descend (Ctrl) — only meaningful while fly camera
/// is active. K.1b binds it to ControlLeft; K.1c may rebind.
AcdreamFlyDown,
// ── AcdreamCameraCommands ─────────────────────────────
/// Camera zoom in (held key, integrates Distance−= adjSpeed·dt). Default unbound.
CameraZoomIn,
/// Camera zoom out (held key, integrates Distance+= adjSpeed·dt). Default unbound.
CameraZoomOut,
/// Camera raise (held key, integrates Pitch+= adjSpeed·dt·0.02). Default unbound.
CameraRaise,
/// Camera lower (held key, integrates Pitch−= adjSpeed·dt·0.02). Default unbound.
CameraLower,
}