]> git.cworth.org Git - empires-server/blobdiff - empathy.js
Add named parameters for the two idle timer controls
[empires-server] / empathy.js
index e03f247f9e207a1cc612ea2ad25c3f78d17982ac..354e3fac2e71838a8753ac71526af40363095782 100644 (file)
@@ -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)