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}`,