+ reveal_next() {
+ if (this.reveal_index >= this.characters_to_reveal.length) {
+ clearInterval(this.reveal_interval);
+ this.broadcast_event("character-reveal", '{"character":""}');
+ return;
+ }
+ const character = this.characters_to_reveal[this.reveal_index];
+ this.reveal_index++;
+ const character_data = JSON.stringify({"character":character});
+ this.broadcast_event("character-reveal", character_data);
+ }
+
+ reveal() {
+ this.change_state(GameState.REVEAL);
+
+ if (this.characters_to_reveal === null) {
+ this.characters_to_reveal = [];
+ this.characters_to_reveal = this._players.reduce((characters, player) => {
+ characters.push(player.character);
+ return characters;
+ }, []);
+ shuffle(this.characters_to_reveal);
+ }
+
+ this.reveal_index = 0;
+
+ this.reveal_interval = setInterval(this.reveal_next.bind(this), 3000);
+ }
+
+ start() {
+ this.change_state(GameState.CAPTURE);
+ }
+