UNPKG

contro-max

Version:

Game controls done in the best possible way!

46 lines (45 loc) 2.17 kB
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 {};