nes-tetris-components
Version:
A set of components and front-end functionality of NES Tetris
51 lines (50 loc) • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const nes_tetris_representation_1 = require("nes-tetris-representation");
const numpadMap = {
Numpad5: nes_tetris_representation_1.Piece.I,
Numpad4: nes_tetris_representation_1.Piece.O,
Numpad6: nes_tetris_representation_1.Piece.T,
Numpad7: nes_tetris_representation_1.Piece.L,
Numpad9: nes_tetris_representation_1.Piece.J,
Numpad1: nes_tetris_representation_1.Piece.S,
Numpad3: nes_tetris_representation_1.Piece.Z,
};
function inputHandler(event, disabled) {
if (disabled) {
return null;
}
if (event.code.startsWith('Numpad')) {
const piece = numpadMap[event.code];
if (piece !== undefined) {
event.preventDefault();
return piece;
}
}
if (event.code.startsWith('Key')) {
const pieceKey = event.code.substring(3, 4);
for (const { value, label } of nes_tetris_representation_1.PieceList) {
if (label === pieceKey) {
return value;
}
}
}
if (event.code.startsWith('Digit')) {
const digit = event.code.substring(5, 6);
const index = parseInt(digit, 10) - 1;
if (index <= 7) {
return [
nes_tetris_representation_1.Piece.L,
nes_tetris_representation_1.Piece.J,
nes_tetris_representation_1.Piece.Z,
nes_tetris_representation_1.Piece.S,
nes_tetris_representation_1.Piece.O,
nes_tetris_representation_1.Piece.T,
nes_tetris_representation_1.Piece.I
][index];
}
}
return null;
}
exports.default = inputHandler;
;