summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
af0746e)
Previously, we were starting the judging_idle timer only when a user
reported they were in the process of judging. This caused a bug in the
following scenario:
* No players group any words
* Majority of players submit the word groups unchanged
* Minority of players drop from the game
* The PHASE_IDLE_TIMEOUT passes
At this point, the game is supposed to consider the judging phase as
idle, but it wasn't doing this because the idle timer never got
started, (because no players actually grouped any words).
This bug came up in some (admittedly artificial) manual
testing. There's no chane to the test suite here because the current
test suite isn't yet exercising the timing related aspects of the
game, (the phase idle timeouts, etc.).
this.broadcast_event_object('ambiguities', this.state.ambiguities);
}
this.broadcast_event_object('ambiguities', this.state.ambiguities);
}
+ reset_judging_timeout() {
+ if (this.judging_idle_timer) {
+ clearTimeout(this.judging_idle_timer);
+ this.judging_idle_timer = 0;
+ }
+ if (! this.state.judging_idle) {
+ this.judging_idle_timer = setTimeout(() => {
+ this.state.judging_idle = true;
+ this.broadcast_event_object('judging-idle', true);
+ }, PHASE_IDLE_TIMEOUT * 1000);
+ }
+ }
+
receive_judged(prompt_id, session_id, word_groups) {
const player = this.players_by_session[session_id];
if (! player)
receive_judged(prompt_id, session_id, word_groups) {
const player = this.players_by_session[session_id];
if (! player)
if (prompt !== this.state.active_prompt)
return { valid: false, message: "Prompt no longer active" };
if (prompt !== this.state.active_prompt)
return { valid: false, message: "Prompt no longer active" };
+ this.reset_judging_timeout();
+
/* Each player submits some number of groups of answers that
* should be considered equivalent. The server expands that into
* the set of pair-wise equivalencies that are expressed. The
/* Each player submits some number of groups of answers that
* should be considered equivalent. The server expands that into
* the set of pair-wise equivalencies that are expressed. The
if (prompt !== this.state.active_prompt)
return { valid: false, message: "Prompt no longer active" };
if (prompt !== this.state.active_prompt)
return { valid: false, message: "Prompt no longer active" };
- if (this.judging_idle_timer) {
- clearTimeout(this.judging_idle_timer);
- this.judging_idle_timer = 0;
- }
- if (! this.state.judging_idle) {
- this.judging_idle_timer = setTimeout(() => {
- this.state.judging_idle = true;
- this.broadcast_event_object('judging-idle', true);
- }, PHASE_IDLE_TIMEOUT * 1000);
- }
+ this.reset_judging_timeout();
/* Notify all players that this player is actively judging. */
this.state.players_judging.add(player.name);
/* Notify all players that this player is actively judging. */
this.state.players_judging.add(player.name);