diff --git a/client/src/Board.js b/client/src/Board.js index 058e16f..9facf70 100644 --- a/client/src/Board.js +++ b/client/src/Board.js @@ -1,4 +1,4 @@ -import React, { useCallback, useRef, useState, useEffect } from "react"; +import React, { useState, useEffect } from "react"; import "./Board.css"; const base = process.env.PUBLIC_URL; @@ -15,24 +15,20 @@ const Board = ({ game }) => { let row = 0, rowCount = 0; let y = center.y - rows.length * 0.5 * 67, x = center.x - (rows[row] - 1) * 0.5 * 77.5; - let divs = [], count = 19; - for (let i = 0; i < count; i++) { - let code = (i === (count - 1)) - ? 'robber' - : String.fromCharCode(65 + i); - divs.push( -
- ); - + return game.pipOrder.map(order => { + const pip = game.pips[order]; + const div = ; + if (++rowCount === rows[row]) { row++; rowCount = 0; @@ -41,98 +37,68 @@ const Board = ({ game }) => { } else { x += 77.5; } - } - return divs; + + return div; + }); }; const generateTiles = () => { let row = 0, rowCount = 0; let y = center.y - rows.length * 0.5 * 67, x = center.x - (rows[row] - 1) * 0.5 * 77.5; + return game.tileOrder.map(order => { + const tile = game.tiles[order]; + let div = ; + + if (++rowCount === rows[row]) { + row++; + rowCount = 0; + y += 67; + x = center.x - (rows[row] - 1) * 0.5 * 77.5; + } else { + x += 77.5; + } - return [ "wood", "wheat", "stone", "sheep", "brick", "robber" ].map((type) => { - let count; - switch (type) { - case "robber": - count = 1; - break; - case "brick": - count = 3; - break; - case "wood": - count = 4; - break; - case "sheep": - count = 4; - break; - case "stone": - count = 3; - break; - case "wheat": - count = 4; - break; - default: - console.error(`Invalid type: ${type}`); - break; - } - let divs = []; - - for (let i = 0; i < count; i++) { - divs.push( - - ); - - if (++rowCount === rows[row]) { - row++; - rowCount = 0; - y += 67; - x = center.x - (rows[row] - 1) * 0.5 * 77.5; - } else { - x += 77.5; - } - } - - return divs; + return div; }); }; const generateBorders = () => { - const divs = [], - radius = 77.5 * 2; - const sides = 6; - for (let side = 0; side < sides; side++) { + const radius = 77.5 * 2, + sides = 6; + let index = 0; + return game.borderOrder.map(order => { +// const border = game.borders[order]; + const side = order; let x = center.x + Math.sin(Math.PI - side / sides * 2. * Math.PI) * radius, y = -33.5 + center.y + Math.cos(Math.PI - side / sides * 2. * Math.PI) * radius; - let prev = (side == 0) ? 6 : side; + let prev = (side === 0) ? 6 : side; const file = `borders-${side+1}.${prev}.png`; - divs.push(