42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
export class InputManager {
|
|
private keyStates: Map<string | number, boolean> = new Map();
|
|
private mouseStates: Map<string | number, boolean> = 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;
|
|
}
|
|
}
|