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;
|
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 {
|
||||||
|
@ -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});
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user