@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
46 lines • 3.62 kB
JavaScript
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