Game order working
Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
parent
8cd903afc5
commit
357dccd130
@ -18,6 +18,7 @@
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background: rgba(0,0,0,0.5);
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.GameOrder .Title {
|
||||
|
@ -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 =>
|
||||
<div className="GameOrderPlayer" key={`player-${item.color}`}>
|
||||
<PlayerColor color={item.color}/>
|
||||
<div>{item.order+1}. {item.name}</div>
|
||||
{ item.orderRoll !== 0 && <>rolled <Dice pips={item.orderRoll}/>.</> }
|
||||
{ item.orderRoll === 0 && <>has not rolled yet.</>}
|
||||
{ item.orderRoll === 0 && <>has not rolled yet. {item.orderStatus}</>}
|
||||
</div>
|
||||
);
|
||||
|
||||
@ -320,7 +322,7 @@ const GameOrder = ({table}) => {
|
||||
<div className="PlayerList">
|
||||
{ players }
|
||||
</div>
|
||||
<Button disabled={table.game.order !== 0} onClick={rollClick}>Roll Dice</Button>
|
||||
<Button disabled={hasRolled} onClick={rollClick}>Roll Dice</Button>
|
||||
</Paper> }
|
||||
</div>
|
||||
);
|
||||
@ -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});
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user