diff --git a/server/routes/games.js b/server/routes/games.js index 6e4c43f..a917d5d 100755 --- a/server/routes/games.js +++ b/server/routes/games.js @@ -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 });