nes-tetris-components
Version:
A set of components and front-end functionality of NES Tetris
45 lines (44 loc) • 2.24 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(require("react"));
require("./representation.css");
const nes_tetris_representation_1 = require("nes-tetris-representation");
const tetris_grid_1 = require("./tetris-grid");
const choose_piece_input_handler_1 = __importDefault(require("./choose-piece-input-handler"));
;
class PieceSelector extends react_1.default.Component {
constructor(props) {
super(props);
this.setPieceFromInput = this.setPieceFromInput.bind(this);
}
setPieceFromInput(event) {
const piece = choose_piece_input_handler_1.default(event);
if (piece !== null) {
this.props.setPiece(piece);
}
}
componentDidMount() {
document.addEventListener('keydown', this.setPieceFromInput);
}
componentWillUnmount() {
document.removeEventListener('keydown', this.setPieceFromInput);
}
drawPiece(piece, width = 6) {
return (react_1.default.createElement("div", { className: `piece-selector-grid-item grid-item-${width}` },
react_1.default.createElement(tetris_grid_1.TetrisGrid, { grid: nes_tetris_representation_1.getPieceGrid(piece), blockSizeInRem: 1.5, onClick: () => this.props.setPiece(piece), className: `piece-selector-selectable-piece selectable-piece${this.props.piece === piece ? ' selected-piece' : ''}`, hideTopTwoRows: false })));
}
render() {
return (react_1.default.createElement("div", { className: "piece-selector-container" },
this.drawPiece(nes_tetris_representation_1.Piece.L),
this.drawPiece(nes_tetris_representation_1.Piece.J),
this.drawPiece(nes_tetris_representation_1.Piece.Z),
this.drawPiece(nes_tetris_representation_1.Piece.S),
this.drawPiece(nes_tetris_representation_1.Piece.O),
this.drawPiece(nes_tetris_representation_1.Piece.T),
this.drawPiece(nes_tetris_representation_1.Piece.I, 12)));
}
}
exports.default = PieceSelector;