40 lines
856 B
TypeScript
40 lines
856 B
TypeScript
const KEYS = 16;
|
|
|
|
|
|
// Keyboard
|
|
// 1 2 3 C
|
|
// 4 5 6 D
|
|
// 7 8 9 E
|
|
// A 0 B F
|
|
class Keyboard {
|
|
keys : Uint8Array;
|
|
|
|
userKeyboardMap: Map<number, number>;
|
|
|
|
constructor() {
|
|
this.keys = new Uint8Array(KEYS);
|
|
|
|
// Used to check keys from the user event.keys
|
|
this.userKeyboardMap = new Map<number, number>();
|
|
}
|
|
|
|
private setKey(key: number, pressed: boolean) {
|
|
this.keys[key] = pressed ? 1 : 0;
|
|
}
|
|
|
|
public setUserKey(userKey: number, key: number) {
|
|
this.userKeyboardMap.set(userKey, key);
|
|
}
|
|
|
|
public userKeyPressedDown(userKey: number) {
|
|
let keyVal: number = this.userKeyboardMap.get(userKey) ?? -1;
|
|
if(keyVal != -1) this.setKey(keyVal, true);
|
|
}
|
|
|
|
public userKeyPressedUp(userKey: number) {
|
|
let keyVal: number = this.userKeyboardMap.get(userKey) ?? -1;
|
|
if(keyVal != -1) this.setKey(keyVal, false);
|
|
}
|
|
}
|
|
|
|
export default Keyboard; |