nes-tetris-representation
Version:
A set of types and classes that represent the pieces, movement, and rng of NES Tetris
51 lines (50 loc) • 1.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const piece_types_1 = require("./piece-types");
const numpadMap = {
Numpad5: piece_types_1.Piece.I,
Numpad4: piece_types_1.Piece.O,
Numpad6: piece_types_1.Piece.T,
Numpad7: piece_types_1.Piece.L,
Numpad9: piece_types_1.Piece.J,
Numpad1: piece_types_1.Piece.S,
Numpad3: piece_types_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 piece_types_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 [
piece_types_1.Piece.L,
piece_types_1.Piece.J,
piece_types_1.Piece.Z,
piece_types_1.Piece.S,
piece_types_1.Piece.O,
piece_types_1.Piece.T,
piece_types_1.Piece.I
][index];
}
}
return null;
}
exports.default = inputHandler;
;