UNPKG

@hiddentao/clockwork-engine

Version:

A TypeScript/PIXI.js game engine for deterministic, replayable games with built-in rendering

66 lines (65 loc) 2.04 kB
/** * Memory Input Layer * * Headless input implementation for testing and replay. * Provides manual event triggering for test scenarios. */ import { EventCallbackManager } from "../utils/EventCallbackManager"; export class MemoryInputLayer { constructor() { this.pointerDownCallbacks = new EventCallbackManager(); this.pointerUpCallbacks = new EventCallbackManager(); this.pointerMoveCallbacks = new EventCallbackManager(); this.clickCallbacks = new EventCallbackManager(); this.keyDownCallbacks = new EventCallbackManager(); this.keyUpCallbacks = new EventCallbackManager(); } // Pointer event subscription onPointerDown(callback) { this.pointerDownCallbacks.register(callback); } onPointerUp(callback) { this.pointerUpCallbacks.register(callback); } onPointerMove(callback) { this.pointerMoveCallbacks.register(callback); } onClick(callback) { this.clickCallbacks.register(callback); } // Keyboard event subscription onKeyDown(callback) { this.keyDownCallbacks.register(callback); } onKeyUp(callback) { this.keyUpCallbacks.register(callback); } // Cleanup removeAllListeners() { this.pointerDownCallbacks.clear(); this.pointerUpCallbacks.clear(); this.pointerMoveCallbacks.clear(); this.clickCallbacks.clear(); this.keyDownCallbacks.clear(); this.keyUpCallbacks.clear(); } // Manual event triggering for testing triggerPointerDown(event) { this.pointerDownCallbacks.trigger(event); } triggerPointerUp(event) { this.pointerUpCallbacks.trigger(event); } triggerPointerMove(event) { this.pointerMoveCallbacks.trigger(event); } triggerClick(event) { this.clickCallbacks.trigger(event); } triggerKeyDown(event) { this.keyDownCallbacks.trigger(event); } triggerKeyUp(event) { this.keyUpCallbacks.trigger(event); } }