UNPKG

nes-tetris-components

Version:

A set of components and front-end functionality of NES Tetris

45 lines (44 loc) 2.24 kB
"use strict"; 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;