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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const priorActive = getActiveCount(game);
|
||||||
|
|
||||||
if (player) {
|
if (player) {
|
||||||
/* Deselect currently active player for this session */
|
/* Deselect currently active player for this session */
|
||||||
clearPlayer(player);
|
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({
|
game.chat.push({
|
||||||
date: Date.now(),
|
date: Date.now(),
|
||||||
message: `${name} is no longer ${session.color}.`
|
message: message
|
||||||
});
|
});
|
||||||
session.player = undefined;
|
session.player = undefined;
|
||||||
session.color = undefined;
|
session.color = undefined;
|
||||||
@ -346,9 +354,20 @@ const setPlayerColor = (game, session, color) => {
|
|||||||
session.player.lastActive = Date.now();
|
session.player.lastActive = Date.now();
|
||||||
session.color = color;
|
session.color = color;
|
||||||
game.chat.push({
|
game.chat.push({
|
||||||
|
from: color,
|
||||||
date: Date.now(),
|
date: Date.now(),
|
||||||
message: `${session.name} has chosen to play as ${color}.`
|
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) => {
|
router.put("/:id/:action/:value?", async (req, res) => {
|
||||||
@ -470,12 +489,18 @@ router.put("/:id", (req, res/*, next*/) => {
|
|||||||
return sendGame(req, res, game);
|
return sendGame(req, res, game);
|
||||||
});
|
});
|
||||||
|
|
||||||
const sendGame = async (req, res, game, error) => {
|
const getActiveCount = (game) => {
|
||||||
let active = 0;
|
let active = 0;
|
||||||
for (let color in game.players) {
|
for (let color in game.players) {
|
||||||
const player = game.players[color];
|
const player = game.players[color];
|
||||||
active += ((player.status && player.status != 'Not active') ? 1 : 0);
|
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') {
|
if (active < 2 && game.state != 'lobby' && game.state != 'invalid') {
|
||||||
let message = "Insufficient players in game. Setting back to lobby."
|
let message = "Insufficient players in game. Setting back to lobby."
|
||||||
game.chat.push({ date: Date.now(), message: message });
|
game.chat.push({ date: Date.now(), message: message });
|
||||||
|
Loading…
x
Reference in New Issue
Block a user