From 81a45630bf885c29bbd3c04125aa4f5e5f019c77 Mon Sep 17 00:00:00 2001 From: thirdmadman Date: Tue, 12 Mar 2024 02:47:13 +0100 Subject: [PATCH] feat: add InputController --- src/app/engine/InputController.ts | 36 +++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/app/engine/InputController.ts diff --git a/src/app/engine/InputController.ts b/src/app/engine/InputController.ts new file mode 100644 index 0000000..fdb3b45 --- /dev/null +++ b/src/app/engine/InputController.ts @@ -0,0 +1,36 @@ +export class InputController { + private pressedKeys: { [key: string]: boolean } = {}; + + private clickedKeys: Array = []; + + pushKeyPressed(key: string) { + this.pressedKeys[key] = true; + } + + pushKeyReleased(key: string) { + delete this.pressedKeys[key]; + if (this.clickedKeys.includes(key)) { + return; + } + this.clickedKeys.push(key); + } + + registerKeyListeners() { + document.addEventListener('keydown', (e) => { + this.pushKeyPressed(e.key); + }); + document.addEventListener('keyup', (e) => { + this.pushKeyReleased(e.key); + }); + } + + getPressedKeys() { + return this.pressedKeys; + } + + getClickedKeys() { + const copy = [...this.clickedKeys]; + this.clickedKeys = []; + return copy; + } +}