import { System } from '../core/System'; /** 按键状态 */ export interface KeyState { pressed: boolean; justPressed: boolean; justReleased: boolean; } /** 手柄类型 */ export type GamepadType = 'xbox' | 'playstation' | 'switch' | 'steamdeck' | '8bitdo' | 'generic'; /** 手柄按钮标准索引 */ export declare enum GamepadButton { A = 0,// Xbox A / PS X / Switch B B = 1,// Xbox B / PS O / Switch A X = 2,// Xbox X / PS Square / Switch Y Y = 3,// Xbox Y / PS Triangle / Switch X LB = 4,// 左肩键 RB = 5,// 右肩键 LT = 6,// 左扳机 RT = 7,// 右扳机 Select = 8,// Select / Share / - Start = 9,// Start / Options / + L3 = 10,// 左摇杆按下 R3 = 11,// 右摇杆按下 DPadUp = 12, DPadDown = 13, DPadLeft = 14, DPadRight = 15, Home = 16 } /** 各平台图标/颜色配置 */ export declare const GAMEPAD_STYLES: Record; /** 手柄状态 */ export interface GamepadState { connected: boolean; type: GamepadType; name: string; axes: number[]; buttons: boolean[]; prevButtons: boolean[]; } /** 输入映射配置 */ export interface InputMapping { keyboard?: string[]; gamepadButton?: number[]; gamepadAxis?: { axis: number; positive: boolean; }; } export declare class InputSystem extends System { static priority: number; /** 键盘状态 */ private keys; /** 手柄状态 */ private gamepads; /** 输入映射 */ private mappings; /** 死区阈值 */ deadzone: number; /** 最大手柄数 */ maxGamepads: number; onCreate(): void; /** * 检测手柄类型 */ private detectGamepadType; onDestroy(): void; onPreUpdate(): void; private onKeyDown; private onKeyUp; private onGamepadConnected; private onGamepadDisconnected; private updateGamepads; /** * 设置输入映射 */ setMapping(action: string, mapping: InputMapping): void; /** * 检查动作是否按住 */ isHeld(action: string, playerIndex?: number): boolean; /** * 检查动作是否刚按下 */ isPressed(action: string, playerIndex?: number): boolean; /** * 检查动作是否刚释放 */ isReleased(action: string, playerIndex?: number): boolean; /** * 获取轴值 (-1 到 1) */ axis(horizontal: boolean, playerIndex?: number): number; /** * 获取水平轴值 */ axisX(playerIndex?: number): number; /** * 获取垂直轴值 */ axisY(playerIndex?: number): number; /** * 获取右摇杆水平轴值 */ rightAxisX(playerIndex?: number): number; /** * 获取右摇杆垂直轴值 */ rightAxisY(playerIndex?: number): number; /** * 检查手柄是否有任意按钮刚按下 */ anyButtonPressed(playerIndex?: number): number | null; /** * 检查手柄是否有任意按钮按住 */ anyButtonHeld(playerIndex?: number): number | null; /** * 检查手柄特定按钮是否刚按下 */ isButtonPressed(button: GamepadButton, playerIndex?: number): boolean; /** * 检查手柄特定按钮是否按住 */ isButtonHeld(button: GamepadButton, playerIndex?: number): boolean; /** * 检查手柄特定按钮是否刚释放 */ isButtonReleased(button: GamepadButton, playerIndex?: number): boolean; /** * 获取原始按键状态 */ key(code: string): KeyState; /** * 获取手柄状态 */ gamepad(index: number): GamepadState | null; /** * 触发手柄震动 */ vibrate(playerIndex: number, options?: { strong?: number; weak?: number; duration?: number; }): void; /** * 获取手柄类型 */ getGamepadType(playerIndex?: number): GamepadType; /** * 获取按钮在当前手柄上的显示名称 */ getButtonName(button: GamepadButton, playerIndex?: number): string; /** * 获取动作的显示提示文本 * 例如:getActionHint('fire', 0) => "按 A 键" (Xbox) 或 "按 B 键" (Switch) */ getActionHint(action: string, playerIndex?: number): string; /** * 格式化键盘按键名称 */ private formatKeyName; /** * 检查是否有任何手柄连接 */ hasGamepad(): boolean; /** * 获取第一个连接的手柄索引 */ getFirstGamepadIndex(): number; /** * 获取所有连接的手柄信息 */ getConnectedGamepads(): Array<{ index: number; type: GamepadType; name: string; }>; } //# sourceMappingURL=InputSystem.d.ts.map