Notify when enough players are active
Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
parent
81082ff460
commit
1619c185d9
@ -305,12 +305,20 @@ const setPlayerColor = (game, session, color) => {
|
||||
return;
|
||||
}
|
||||
|
||||
const priorActive = getActiveCount(game);
|
||||
|
||||
if (player) {
|
||||
/* Deselect currently active player for this session */
|
||||
clearPlayer(player);
|
||||
let message;
|
||||
if (game.state !== 'lobby') {
|
||||
message = `${name} has exited to the lobby and is no longer playing as ${session.color}.`
|
||||
} else {
|
||||
message = `${name} is no longer ${session.color}.`;
|
||||
}
|
||||
game.chat.push({
|
||||
date: Date.now(),
|
||||
message: `${name} is no longer ${session.color}.`
|
||||
message: message
|
||||
});
|
||||
session.player = undefined;
|
||||
session.color = undefined;
|
||||
@ -341,14 +349,25 @@ const setPlayerColor = (game, session, color) => {
|
||||
|
||||
/* All good -- set this player to requested selection */
|
||||
session.player = getPlayer(game, color);
|
||||
|
||||
|
||||
session.player.status = `Active`;
|
||||
session.player.lastActive = Date.now();
|
||||
session.color = color;
|
||||
game.chat.push({
|
||||
from: color,
|
||||
date: Date.now(),
|
||||
message: `${session.name} has chosen to play as ${color}.`
|
||||
});
|
||||
|
||||
const afterActive = getActiveCount(game);
|
||||
if (afterActive !== priorActive) {
|
||||
if (priorActive < 2 && afterActive >= 2) {
|
||||
game.chat.push({
|
||||
date: Date.now(),
|
||||
message: `There are now enough players to start the game when you are ready.`
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
router.put("/:id/:action/:value?", async (req, res) => {
|
||||
@ -470,12 +489,18 @@ router.put("/:id", (req, res/*, next*/) => {
|
||||
return sendGame(req, res, game);
|
||||
});
|
||||
|
||||
const sendGame = async (req, res, game, error) => {
|
||||
const getActiveCount = (game) => {
|
||||
let active = 0;
|
||||
for (let color in game.players) {
|
||||
const player = game.players[color];
|
||||
active += ((player.status && player.status != 'Not active') ? 1 : 0);
|
||||
}
|
||||
return active;
|
||||
}
|
||||
|
||||
const sendGame = async (req, res, game, error) => {
|
||||
const active = getActiveCount(game);
|
||||
|
||||
if (active < 2 && game.state != 'lobby' && game.state != 'invalid') {
|
||||
let message = "Insufficient players in game. Setting back to lobby."
|
||||
game.chat.push({ date: Date.now(), message: message });
|
||||
|
Loading…
x
Reference in New Issue
Block a user