export class InputManager { private keyStates: Map = new Map(); private mouseStates: Map = new Map(); private mouseLocation: { x: number; y: number } = { x: 0, y: 0 }; private mouseDelta: { x: number; y: number } = { x: 0, y: 0 }; constructor() { document.addEventListener("keydown", (e) => { this.keyStates.set(e.key, true); }); document.addEventListener("keyup", (e) => { this.keyStates.set(e.key, false); }); document.addEventListener("mousedown", (e) => { this.mouseStates.set(e.button, true); }); document.addEventListener("mouseup", (e) => { this.mouseStates.set(e.button, false); }); self.addEventListener("mousemove", (e) => { this.mouseLocation = { x: e.clientX, y: e.clientY }; this.mouseDelta = { x: e.movementX, y: e.movementY, }; }); } getKeyState(key: string | number) { return this.keyStates.get(key); } getMouseState(key: string | number) { return this.mouseStates.get(key); } getMouseLocation() { return this.mouseLocation; } getMouseDelta() { return this.mouseDelta; } }