contro-max
Version:
Game controls done in the best possible way!
46 lines (45 loc) • 2.17 kB
TypeScript
import { Except } from 'type-fest';
import { AllKeyCodes } from './types/keyCodes';
import { ControEvents, CreateControlsSchemaOptions, InputCommandsSchema, InputGroupedCommandsSchema, InputSchemaArg, SchemaCommand } from './types';
import { GamepadButtonName } from './gamepad';
import { UserOverridesConfig } from './types/store';
import { TypedEventEmitter } from './typedEventEmitter';
type MovementVectorType = '2d' | '3d';
export declare class ControMax<T extends InputCommandsSchema, K extends InputGroupedCommandsSchema, M extends MovementVectorType, D extends {
movementVector?: M;
} & InputSchemaArg<T, K>> extends TypedEventEmitter<ControEvents<D['commands'], K, M>> {
options: CreateControlsSchemaOptions;
/** type only @deprecated */
_commandsRaw: D['commands'];
inputSchema: Except<D, 'commands'> & {
commands: {
[G in keyof T]: {
[C in keyof T[G]]: SchemaCommand;
};
};
};
/** Raw set of all pressed key at the moment */
pressedKeys: ReadonlySet<AllKeyCodes>;
/** Disable input handling. */
enabled: boolean;
userConfig: UserOverridesConfig | undefined;
pressedKeyOrButtonChanged: (codeOrButton: {
code: AllKeyCodes;
} | {
gamepadIndex: number;
button: GamepadButtonName;
}, buttonPressed: boolean, options?: {
preventDefault?: (() => void) | undefined;
}) => void;
private handleMovementKeyInternal;
constructor(inputSchema: D, options?: CreateControlsSchemaOptions);
trigger<T1 extends keyof T>(category: T1, command: keyof T[T1]): void;
triggerGroupedCommand<K1 extends keyof K>(category: K1, command: keyof K[K1], indexOrKey: (K[K1] extends [Array<infer U>, ...any] ? U : string) | number): void;
/**
* Trigger movement in a specific direction programmatically.
* @param direction - Movement direction: 'forward' (or 'up'), 'backward' (or 'down'), 'left', 'right'
* @param pressed - true for keydown/press, false for keyup/release
*/
setMovement(direction: 'forward' | 'backward' | 'left' | 'right' | 'up' | 'down', pressed: boolean): void;
}
export {};