From 103ecf8bb438468236c06f2f5357c03b1b5de65e Mon Sep 17 00:00:00 2001 From: Oliver-Akins Date: Wed, 21 Oct 2020 22:15:52 -0600 Subject: [PATCH] Implement the KillGame event. --- src/events/KillGame.ts | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/src/events/KillGame.ts b/src/events/KillGame.ts index f044e72..ba8dfe9 100644 --- a/src/events/KillGame.ts +++ b/src/events/KillGame.ts @@ -1,4 +1,44 @@ import { Server, Socket } from 'socket.io'; +import { active_games, log } from '../main'; export const KillGame = (io: Server, socket: Socket, data: KillGame) => { - console.log(`Killing the game`); + try { + + // Ensure active game + if (active_games[data.game_code] == null) { + log.debug(`Could not find active game with code: ${data.game_code}`); + socket.emit(`GameKilled`, { + success: false, + message: `Could not find active game with code: ${data.game_code}`, + }); + return; + }; + let game = active_games[data.game_code]; + + // Ensure host is killing + if (game.host !== data.user) { + log.info(`${data.user} just tried to kill game ${game.code}`); + socket.emit(`GameKilled`, { + success: false, + message: `Only the host can kill the game.`, + }); + return; + }; + + log.info(`Deleting game ${game.code} with ${game.player_count} players.`); + + // Alert all players in the room + io.to(game.code).emit(`GameKilled`, { + success: true, + }); + + // Remove all players from room + for (var player in game.players) { + io.sockets.connected[game.players[player].socket].leave(game.code); + }; + + // Delete game object + delete active_games[game.code]; + } catch (err) { + log.prettyError(err); + }; }; \ No newline at end of file