diff --git a/client/src/Table.css b/client/src/Table.css index b7567d8..9adc505 100755 --- a/client/src/Table.css +++ b/client/src/Table.css @@ -18,6 +18,7 @@ justify-content: center; align-items: center; background: rgba(0,0,0,0.5); + z-index: 1000; } .GameOrder .Title { diff --git a/client/src/Table.js b/client/src/Table.js index 1054444..f52e75d 100755 --- a/client/src/Table.js +++ b/client/src/Table.js @@ -281,10 +281,13 @@ const GameOrder = ({table}) => { return (<>); } - let players = []; + let players = [], hasRolled = true; for (let color in table.game.players) { const item = table.game.players[color], name = getPlayerName(table.game.sessions, color); + if (color === table.game.color) { + hasRolled = item.orderRoll !== 0; + } if (name) { if (!item.orderRoll) { item.orderRoll = 0; @@ -303,13 +306,12 @@ const GameOrder = ({table}) => { return B.order - A.order; }); - console.log(players); players = players.map(item =>
{item.order+1}. {item.name}
{ item.orderRoll !== 0 && <>rolled . } - { item.orderRoll === 0 && <>has not rolled yet.} + { item.orderRoll === 0 && <>has not rolled yet. {item.orderStatus}}
); @@ -320,7 +322,7 @@ const GameOrder = ({table}) => {
{ players }
- + } ); @@ -750,7 +752,6 @@ class Table extends React.Component { console.log (`Game state set to ${game.state}!`); this.updateGame(game); this.updateMessage(); - this.setState({ /*game: { ...this.state.game, state: game.state }, */error: `Game state now ${game.state}.` }); }).catch((error) => { console.error(error); this.setState({error: error.message}); diff --git a/server/routes/games.js b/server/routes/games.js index f4ecbbd..aa1a013 100755 --- a/server/routes/games.js +++ b/server/routes/games.js @@ -131,11 +131,11 @@ const processTies = (players) => { pips.forEach(player => { player.orderRoll = 0; player.order = order; - player.orderStatus = `Tied for ${order}`; + player.orderStatus = `Tied for ${order+1}.`; }); } else { pips[0].order = order; - pips[0].orderStatus = `Placed in ${order}`; + pips[0].orderStatus = `Placed in ${order+1}.`; } order += pips.length }) @@ -144,10 +144,19 @@ const processTies = (players) => { return !ties; } + +const getPlayerName = (game, player) => { + for (let id in game.sessions) { + if (game.sessions[id].player === player) { + return game.sessions[id].name; + } + } + return ''; +}; + const processGameOrder = (game, player, dice) => { let message; - console.log(`rolled ${dice}`); player.orderRoll = dice; let players = []; @@ -162,14 +171,16 @@ const processGameOrder = (game, player, dice) => { if (!tmp.orderRoll) { doneRolling = false; } - tmp.color = key; + players.push(tmp); } /* If 'doneRolling' is TRUE then everyone has rolled */ if (doneRolling) { if (processTies(players)) { - message = `Player order set to ${players.map(player => player.color).join(',')}.`; + message = `Player order set to ${players.map((player, index) => { + return `${index+1}. ${getPlayerName(game, player)}`; + }).join(', ')}.`; game.chat.push({ date: Date.now(), message: message }); game.state = 'active' message = `Game has started!`; @@ -201,7 +212,7 @@ const roll = (game, session) => { if (player.order || player.orderRoll) { error = `Player ${name} has already rolled for player order.`; - // break; + break; } game.dice = [ Math.ceil(Math.random() * 6) ]; @@ -544,6 +555,7 @@ router.put("/:id/:action/:value?", async (req, res) => { } const name = session.name; + let message; switch (action) { case "roll": @@ -567,10 +579,30 @@ router.put("/:id/:action/:value?", async (req, res) => { const state = value; if (!state) { error = `Invalid state.`; - } else if (state != game.state) { - game.state = state; - const message = `${name} set game state to ${state}.`; + break; + } + + if (state === game.state) { + break; + } + + switch (state) { + case "game-order": + if (game.state !== 'lobby') { + error = `You cannot start a game from other than the lobby.`; + break; + } + + for (let key in game.players) { + game.players[key].order = 0; + delete game.players[key].orderRoll; + delete game.players[key].orderStatus; + } + + message = `${name} requested to start the game.`; game.chat.push({ date: Date.now(), message: message }); + game.state = state; + break; } break; }