summaryrefslogtreecommitdiffstats
path: root/src/view/input/inputhandler.ts
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2018-11-01 00:59:13 +0100
committerMatthias Schiffer <mschiffer@universe-factory.net>2018-11-01 00:59:13 +0100
commit9f2e4e6996fb96d23e1ca29667130a2111a59de5 (patch)
treefa7c3c22d469f062252735269dbc09031fc47dd8 /src/view/input/inputhandler.ts
parent22b06efe2c2646a01535b5bbf5f3cc57de81ad0d (diff)
downloadrpgedit-9f2e4e6996fb96d23e1ca29667130a2111a59de5.tar
rpgedit-9f2e4e6996fb96d23e1ca29667130a2111a59de5.zip
Do not use default exports
Diffstat (limited to 'src/view/input/inputhandler.ts')
-rw-r--r--src/view/input/inputhandler.ts39
1 files changed, 39 insertions, 0 deletions
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<number> = new Set();
+
+ constructor(relevantKeys: Set<number>) {
+ 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);
+ }
+}