import {Listenable} from '../../util'; export default 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); } }