diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2018-10-31 10:52:57 +0100 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2018-10-31 10:52:57 +0100 |
commit | 1712352d1c72628a045300fe922c82cd3214070a (patch) | |
tree | 620bd559e2e8fb018d692cf10c20ecd7d108cb04 /src/view/input/InputHandler.ts | |
parent | a86a80e402d5cc58bc2bf248ddbf82d5fafa88a1 (diff) | |
download | rpgedit-1712352d1c72628a045300fe922c82cd3214070a.tar rpgedit-1712352d1c72628a045300fe922c82cd3214070a.zip |
view: add simple input handlers
Diffstat (limited to 'src/view/input/InputHandler.ts')
-rw-r--r-- | src/view/input/InputHandler.ts | 39 |
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..a6f1293 --- /dev/null +++ b/src/view/input/InputHandler.ts @@ -0,0 +1,39 @@ +import {Listenable} from '../../util'; + +export default 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); + } +} |