super(id);
this.state = {
prompts: [],
- active_prompt: null
+ active_prompt: null,
+ players_answered: 0
};
+ this.answers = [];
this.next_prompt_id = 1;
}
return true;
}
+
+ receive_answer(prompt_id, session_id, answers) {
+ const player = this.players_by_session[session_id];
+ if (! player)
+ return { valid: false, message: "Player not found" };
+
+ const prompt = this.state.prompts.find(p => p.id === prompt_id);
+ if (! prompt)
+ return { valid: false, message: "Prompt not found" };
+
+ if (prompt !== this.state.active_prompt)
+ return { valid: false, message: "Prompt no longer active" };
+
+ /* Save the complete answers for our own use later. */
+ this.answers.push({
+ player: player,
+ answers: answers
+ });
+
+ /* And notify players how many players have answered. */
+ this.state.players_answered++;
+
+ this.broadcast_event_object('answered', this.state.players_answered);
+
+ return { valid: true };
+ }
}
Empathy.router = express.Router();
response.sendStatus(404);
});
+router.post('/answer/:prompt_id([0-9]+)', (request, response) => {
+ const game = request.game;
+ const prompt_id = parseInt(request.params.prompt_id, 10);
+
+ const result = game.receive_answer(prompt_id,
+ request.session.id,
+ request.body.answers);
+ response.json(result);
+});
+
Empathy.meta = {
name: "Empathy",
identifier: "empathy",