1
0

Game order working

Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
James Ketrenos 2022-02-03 16:06:26 -08:00
parent 8cd903afc5
commit 357dccd130
3 changed files with 48 additions and 14 deletions

View File

@ -18,6 +18,7 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
background: rgba(0,0,0,0.5); background: rgba(0,0,0,0.5);
z-index: 1000;
} }
.GameOrder .Title { .GameOrder .Title {

View File

@ -281,10 +281,13 @@ const GameOrder = ({table}) => {
return (<></>); return (<></>);
} }
let players = []; let players = [], hasRolled = true;
for (let color in table.game.players) { for (let color in table.game.players) {
const item = table.game.players[color], const item = table.game.players[color],
name = getPlayerName(table.game.sessions, color); name = getPlayerName(table.game.sessions, color);
if (color === table.game.color) {
hasRolled = item.orderRoll !== 0;
}
if (name) { if (name) {
if (!item.orderRoll) { if (!item.orderRoll) {
item.orderRoll = 0; item.orderRoll = 0;
@ -303,13 +306,12 @@ const GameOrder = ({table}) => {
return B.order - A.order; return B.order - A.order;
}); });
console.log(players);
players = players.map(item => players = players.map(item =>
<div className="GameOrderPlayer" key={`player-${item.color}`}> <div className="GameOrderPlayer" key={`player-${item.color}`}>
<PlayerColor color={item.color}/> <PlayerColor color={item.color}/>
<div>{item.order+1}. {item.name}</div> <div>{item.order+1}. {item.name}</div>
{ item.orderRoll !== 0 && <>rolled <Dice pips={item.orderRoll}/>.</> } { 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> </div>
); );
@ -320,7 +322,7 @@ const GameOrder = ({table}) => {
<div className="PlayerList"> <div className="PlayerList">
{ players } { players }
</div> </div>
<Button disabled={table.game.order !== 0} onClick={rollClick}>Roll Dice</Button> <Button disabled={hasRolled} onClick={rollClick}>Roll Dice</Button>
</Paper> } </Paper> }
</div> </div>
); );
@ -750,7 +752,6 @@ class Table extends React.Component {
console.log (`Game state set to ${game.state}!`); console.log (`Game state set to ${game.state}!`);
this.updateGame(game); this.updateGame(game);
this.updateMessage(); this.updateMessage();
this.setState({ /*game: { ...this.state.game, state: game.state }, */error: `Game state now ${game.state}.` });
}).catch((error) => { }).catch((error) => {
console.error(error); console.error(error);
this.setState({error: error.message}); this.setState({error: error.message});

View File

@ -131,11 +131,11 @@ const processTies = (players) => {
pips.forEach(player => { pips.forEach(player => {
player.orderRoll = 0; player.orderRoll = 0;
player.order = order; player.order = order;
player.orderStatus = `Tied for ${order}`; player.orderStatus = `Tied for ${order+1}.`;
}); });
} else { } else {
pips[0].order = order; pips[0].order = order;
pips[0].orderStatus = `Placed in ${order}`; pips[0].orderStatus = `Placed in ${order+1}.`;
} }
order += pips.length order += pips.length
}) })
@ -144,10 +144,19 @@ const processTies = (players) => {
return !ties; 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) => { const processGameOrder = (game, player, dice) => {
let message; let message;
console.log(`rolled ${dice}`);
player.orderRoll = dice; player.orderRoll = dice;
let players = []; let players = [];
@ -162,14 +171,16 @@ const processGameOrder = (game, player, dice) => {
if (!tmp.orderRoll) { if (!tmp.orderRoll) {
doneRolling = false; doneRolling = false;
} }
tmp.color = key;
players.push(tmp); players.push(tmp);
} }
/* If 'doneRolling' is TRUE then everyone has rolled */ /* If 'doneRolling' is TRUE then everyone has rolled */
if (doneRolling) { if (doneRolling) {
if (processTies(players)) { 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.chat.push({ date: Date.now(), message: message });
game.state = 'active' game.state = 'active'
message = `Game has started!`; message = `Game has started!`;
@ -201,7 +212,7 @@ const roll = (game, session) => {
if (player.order || player.orderRoll) { if (player.order || player.orderRoll) {
error = `Player ${name} has already rolled for player order.`; error = `Player ${name} has already rolled for player order.`;
// break; break;
} }
game.dice = [ Math.ceil(Math.random() * 6) ]; game.dice = [ Math.ceil(Math.random() * 6) ];
@ -544,6 +555,7 @@ router.put("/:id/:action/:value?", async (req, res) => {
} }
const name = session.name; const name = session.name;
let message;
switch (action) { switch (action) {
case "roll": case "roll":
@ -567,10 +579,30 @@ router.put("/:id/:action/:value?", async (req, res) => {
const state = value; const state = value;
if (!state) { if (!state) {
error = `Invalid state.`; error = `Invalid state.`;
} else if (state != game.state) { break;
game.state = state; }
const message = `${name} set game state to ${state}.`;
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.chat.push({ date: Date.now(), message: message });
game.state = state;
break;
} }
break; break;
} }