From 4b2a13460d279261b49a6599cd3a5ba2fdd0f64d Mon Sep 17 00:00:00 2001 From: Oliver-Akins Date: Sun, 27 Dec 2020 13:36:48 -0700 Subject: [PATCH] Implement SelectObject event. --- server/src/events/SelectObject.ts | 36 ++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/server/src/events/SelectObject.ts b/server/src/events/SelectObject.ts index 72fd7eb..b8130c5 100644 --- a/server/src/events/SelectObject.ts +++ b/server/src/events/SelectObject.ts @@ -1,13 +1,39 @@ +import { games, log } from '../main'; import { Server, Socket } from 'socket.io'; export default (io: Server, socket: Socket, data: SelectObject) => { try { - socket.emit(`Error`, { - status: 501, - message: `SelectObject: Not Implemented Yet`, - source: `SelectObject`, + + // Assert game exists + if (!games[data.game_code]) { + log.debug(`Can't delete game that doesn't exist: ${data.game_code}`); + socket.emit(`Error`, { + status: 404, + message: `Game with code ${data.game_code} could not be found`, + source: `SelectObject` + }); + return; + }; + let game = games[data.game_code]; + + // Assert that the object is actually a valid choice + if (!game.objects.includes(data.object)) { + log.warn(`[${game.id}] Someone tried selecting an object that doesn't exist: ${data.object}`); + socket.emit(`Error`, { + status: 409, + message: `That object isn't on the card.`, + source: `SelectObject` + }); + return; + }; + + log.debug(`[${game.id}] Object has been chosen: ${data.object}`); + game.object = data.object; + io.to(game.id).emit(`ChosenObject`, { + object: data.object }); - } catch (err) { + } + catch (err) { socket.emit(`Error`, { status: 500, message: `${err.name}: ${err.message}`,