51 lines
2.0 KiB
TypeScript
51 lines
2.0 KiB
TypeScript
/**
|
||
* Copyright (c) 2026 Dominic Masters
|
||
*
|
||
* This software is released under the MIT License.
|
||
* https://opensource.org/licenses/MIT
|
||
*/
|
||
|
||
/** Opaque type alias for input action identifiers. */
|
||
type InputAction = number;
|
||
|
||
/** Polling-based input queries and button rebinding. */
|
||
interface InputNamespace {
|
||
/** Returns `true` while the given action is held down this frame. */
|
||
isDown(action: InputAction): boolean;
|
||
/** Returns `true` if the given action was held down last frame. */
|
||
wasDown(action: InputAction): boolean;
|
||
/** Returns `true` on the first frame the action transitions up → down. */
|
||
pressed(action: InputAction): boolean;
|
||
/** Returns `true` on the first frame the action transitions down → up. */
|
||
released(action: InputAction): boolean;
|
||
/** Continuous (analog) value in `0.0–1.0`. Digital buttons return 0 or 1. */
|
||
getValue(action: InputAction): number;
|
||
/**
|
||
* Signed axis value `-1.0–1.0`: `getValue(pos) - getValue(neg)`.
|
||
* @param neg - Action mapped to the negative direction.
|
||
* @param pos - Action mapped to the positive direction.
|
||
*/
|
||
axis(neg: InputAction, pos: InputAction): number;
|
||
/**
|
||
* Rebinds a physical button to a logical action at runtime.
|
||
* @param buttonName - Platform-specific button name, e.g. `"A"`, `"START"`.
|
||
* @param action - Target `INPUT_ACTION_*` constant.
|
||
*/
|
||
bind(buttonName: string, action: InputAction): void;
|
||
}
|
||
|
||
/** Polling-based input system. */
|
||
declare var Input: InputNamespace;
|
||
|
||
// Input action constants — injected as globals by the engine at startup.
|
||
declare var INPUT_ACTION_UP: InputAction;
|
||
declare var INPUT_ACTION_DOWN: InputAction;
|
||
declare var INPUT_ACTION_LEFT: InputAction;
|
||
declare var INPUT_ACTION_RIGHT: InputAction;
|
||
declare var INPUT_ACTION_ACCEPT: InputAction;
|
||
declare var INPUT_ACTION_CANCEL: InputAction;
|
||
declare var INPUT_ACTION_RAGEQUIT: InputAction;
|
||
declare var INPUT_ACTION_CONSOLE: InputAction;
|
||
declare var INPUT_ACTION_POINTERX: InputAction;
|
||
declare var INPUT_ACTION_POINTERY: InputAction;
|