UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

46 lines 3.62 kB
import { TgdEvent } from "../event/index.js"; export class TgdInputKeyboard { constructor() { this.eventKeyPress = new TgdEvent(); this.keysDown = new Set(); this.keysUp = new Set(); this.attached = false; this.handleKeyDown = (event) => { this.keysDown.add(event.key); this.keysUp.delete(event.key); }; this.handleKeyUp = (event) => { this.keysDown.delete(event.key); this.keysUp.add(event.key); this.eventKeyPress.dispatch(event); }; globalThis.document.addEventListener("keydown", this.handleKeyDown); globalThis.document.addEventListener("keyup", this.handleKeyUp); this.attached = true; } detach() { if (!this.attached) return; globalThis.document.removeEventListener("keydown", this.handleKeyDown); globalThis.document.removeEventListener("keyup", this.handleKeyUp); this.attached = false; } isUp(...keys) { return !this.isDown(...keys); } isDown(...keys) { for (const key of keys) { if (!this.keysDown.has(key)) return false; } return true; } hasClicked(key) { if (this.keysUp.has(key)) { this.keysUp.delete(key); return true; } return false; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5wdXQva2V5Ym9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUVuQyxNQUFNLE9BQU8sZ0JBQWdCO0lBT3pCO1FBTmdCLGtCQUFhLEdBQUcsSUFBSSxRQUFRLEVBQWlCLENBQUE7UUFFNUMsYUFBUSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUE7UUFDNUIsV0FBTSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUE7UUFDbkMsYUFBUSxHQUFHLEtBQUssQ0FBQTtRQW1DUCxrQkFBYSxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1lBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDakMsQ0FBQyxDQUFBO1FBRWdCLGdCQUFXLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUU7WUFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN0QyxDQUFDLENBQUE7UUF6Q0csVUFBVSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQ25FLFVBQVUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUMvRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQTtJQUN4QixDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU07UUFFMUIsVUFBVSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQ3RFLFVBQVUsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUNsRSxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtJQUN6QixDQUFDO0lBRUQsSUFBSSxDQUFDLEdBQUcsSUFBYztRQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxJQUFjO1FBQ3BCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQTtRQUM3QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVc7UUFDbEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ3ZCLE9BQU8sSUFBSSxDQUFBO1FBQ2YsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFBO0lBQ2hCLENBQUM7Q0FZSiJ9