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;
}