From 9f2e4e6996fb96d23e1ca29667130a2111a59de5 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Thu, 1 Nov 2018 00:59:13 +0100 Subject: Do not use default exports --- src/view/input/inputhandler.ts | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/view/input/inputhandler.ts (limited to 'src/view/input/inputhandler.ts') diff --git a/src/view/input/inputhandler.ts b/src/view/input/inputhandler.ts new file mode 100644 index 0000000..96f15dd --- /dev/null +++ b/src/view/input/inputhandler.ts @@ -0,0 +1,39 @@ +import { Listenable } from '../../util'; + +export class InputHandler extends Listenable<[]> { + private readonly keys: Set = new Set(); + + constructor(relevantKeys: Set) { + super(); + + window.addEventListener('keydown', (ev) => { + if (!relevantKeys.has(ev.keyCode)) + return; + + ev.preventDefault(); + + if (this.keys.has(ev.keyCode)) + return; + + this.keys.add(ev.keyCode); + this.runListeners(); + }); + + window.addEventListener('keyup', (ev) => { + if (!relevantKeys.has(ev.keyCode)) + return; + + ev.preventDefault(); + + if (!this.keys.has(ev.keyCode)) + return; + + this.keys.delete(ev.keyCode); + this.runListeners(); + }); + } + + public has(key: number): boolean { + return this.keys.has(key); + } +} -- cgit v1.2.3