this.broadcast_phase_change();
}
+ serialize() {
+ const data = super.serialize();
+ data._spectators = this._spectators;
+ data.next_spectator_id = this.next_spectator_id;
+ data._players = this._players;
+ data.characters_to_reveal = this.characters_to_reveal;
+ data.phase = this.phase;
+ data.old_phase = this.old_phase;
+ data.reveal_index = this.reveal_index;
+ return data;
+ }
+
+ restore(data) {
+ super.restore(data);
+ this._spectators = data._spectators || [];
+ this.next_spectator_id = data.next_spectator_id || 1;
+ this._players = data._players || [];
+ this.characters_to_reveal = data.characters_to_reveal || null;
+ this.phase = data.phase || GamePhase.JOIN;
+ this.old_phase = data.old_phase;
+ this.reveal_index = data.reveal_index || 0;
+
+ /* Restart the reveal interval if we were mid-reveal. */
+ if (this.phase === GamePhase.REVEAL && this.characters_to_reveal) {
+ this.reveal_interval = setInterval(this.reveal_next.bind(this), 3000);
+ }
+ }
+
handle_events(request, response) {
super.handle_events(request, response);