main/handler/KeyboardHandler.js
import { GameState } from 'GameState';
export class KeyboardHandler {
static get KEYS() {
return {
BACKSPACE: 8,
TAB: 9,
ENTER: 13,
SHIFT: 16,
CTRL: 17,
ALT: 18,
PAUSE_BREAK: 19,
CAPS_LOCK: 20,
ESCAPE: 27,
SPACE: 32,
PAGE_UP: 33,
PAGE_DOWN: 34,
END: 35,
HOME: 36,
LEFT_ARROW: 37,
UP_ARROW: 38,
RIGHT_ARROW: 39,
DOWN_ARROW: 40,
INSERT: 45,
DELETE: 46,
NUM_0: 48,
NUM_1: 49,
NUM_2: 50,
NUM_3: 51,
NUM_4: 52,
NUM_5: 53,
NUM_6: 54,
NUM_7: 55,
NUM_8: 56,
NUM_9: 57,
A: 65,
B: 66,
C: 67,
D: 68,
E: 69,
F: 70,
G: 71,
H: 72,
I: 73,
J: 74,
K: 75,
L: 76,
M: 77,
N: 78,
O: 79,
P: 80,
Q: 81,
R: 82,
S: 83,
T: 84,
U: 85,
V: 86,
W: 87,
X: 88,
Y: 89,
Z: 90,
LEFT_WINDOW: 91,
RIGHT_WINDOW: 92,
SELECT_KEY: 93,
NUMPAD_0: 96,
NUMPAD_1: 97,
NUMPAD_2: 98,
NUMPAD_3: 99,
NUMPAD_4: 100,
NUMPAD_5: 101,
NUMPAD_6: 102,
NUMPAD_7: 103,
NUMPAD_8: 104,
NUMPAD_9: 105,
MULTIPLY: 106,
ADD: 107,
SUBTRACT: 109,
DECIMAL_POINT: 110,
DIVIDE: 111,
F1: 112,
F2: 113,
F3: 114,
F4: 115,
F5: 116,
F6: 117,
F7: 118,
F8: 119,
F9: 120,
F10: 121,
F11: 122,
F12: 123,
NUM_LOCK: 144,
SCROLL_LOCK: 145,
SEMICOLON: 186,
EQUAL_SIGN: 187,
COMMA: 188,
DASH: 189,
PERIOD: 190,
FORWARD_SLASH: 191,
GRAVE_ACCENT: 192,
OPEN_BRACKET: 219,
BACK_SLASH: 220,
CLOSE_BRAKET: 221,
SINGLE_QUOTE: 222
}
}
constructor() {
// TODO: Ver como registrar os eventos apenas para o canvas (domElement)
this._keys = new Map();
window.addEventListener('keyup', (event) => {
event.stopPropagation();
this._keys.delete(event.keyCode);
}, false);
window.addEventListener('keydown', (event) => {
event.stopPropagation();
if (event.keyCode === KeyboardHandler.KEYS.BACKSPACE ||
event.keyCode === KeyboardHandler.KEYS.UP_ARROW ||
event.keyCode === KeyboardHandler.KEYS.DOWN_ARROW ||
event.keyCode === KeyboardHandler.KEYS.LEFT_ARROW ||
event.keyCode === KeyboardHandler.KEYS.RIGHT_ARROW ||
event.keyCode === KeyboardHandler.KEYS.PAGE_UP ||
event.keyCode === KeyboardHandler.KEYS.PAGE_DOWN ||
event.keyCode === KeyboardHandler.KEYS.SPACE) {
event.preventDefault();
}
this._keys.set(event.keyCode, GameState.time);
}, false);
}
isDown(key) {
return this._keys.get(key);
}
}