From: Carl Worth Date: Thu, 18 Jun 2020 14:57:27 +0000 (-0700) Subject: Add named parameters for the two idle timer controls X-Git-Url: https://git.cworth.org/git?p=lmno-server;a=commitdiff_plain;h=4fbd72283671883caf0d6a9e5ef0181c4ae6f011 Add named parameters for the two idle timer controls These controls may need some tweaking, so it's better to have some defined names for them along with some carefully specified semantics. Also, we plan to extend the current idle detection from the answering phased to the judging phase as well, so it will be nice to be able to reuse these parameters there too. --- diff --git a/empathy.js b/empathy.js index e03f247..354e3fa 100644 --- a/empathy.js +++ b/empathy.js @@ -3,6 +3,24 @@ const Game = require("./game.js"); const MAX_PROMPT_ITEMS = 20; +/* This time parameter specifies a time period in which a phase will + * not be considered idle in any circumstance. That is, this should be + * a reasonable time in which any "active" player should have at least + * started interacting with the current phase. + * + * Specified in seconds + */ +const PHASE_MINIMUM_TIME = 30; + +/* This parameter gives the amount of time that the game will wait to + * see activity from pending players. If this amount of time passes + * with no activity from any of them, the server will emit an "idle" + * event which will let clients issue a vote to end the current phase. + * + * Specified in seconds + */ +const PHASE_IDLE_TIMEOUT = 10; + class Empathy extends Game { constructor(id) { super(id); @@ -160,7 +178,7 @@ class Empathy extends Game { * players_answering list before anyone else even got in. */ if (this.state.players_answering.size === 0 && - ((Date.now() - this.answering_start_time_ms) / 1000) > 30) + ((Date.now() - this.answering_start_time_ms) / 1000) > PHASE_MINIMUM_TIME) { this.broadcast_event_object('answering-idle', true); } @@ -187,7 +205,7 @@ class Empathy extends Game { this.answering_idle_timer = setTimeout(() => { this.state_answering_idle = true; this.broadcast_event_object('answering-idle', true); - }, 10 * 1000); + }, PHASE_IDLE_TIMEOUT * 1000); } if (this.answering_start_time_ms === 0)