From: Carl Worth Date: Sun, 8 Mar 2026 23:01:04 +0000 (-0400) Subject: lmno: Add game specific restore() operation to reconsstruct Set objects X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=4ad55f35b874ab0cd25832600687dda8b5769caa;p=lmno-server lmno: Add game specific restore() operation to reconsstruct Set objects The game state save logic serializes any Set objects as arrays, so we need this extra little bit of code to re-construct Set objects from arrays at time of restore. --- diff --git a/anagrams.js b/anagrams.js index 7a6a250..c0e3be8 100644 --- a/anagrams.js +++ b/anagrams.js @@ -849,6 +849,11 @@ class Anagrams extends Game { })}\n\n`); } } + + restore(data) { + super.restore(data); + this.state.done_players = new Set(this.state.done_players); + } } Anagrams.router = express.Router(); diff --git a/empathy.js b/empathy.js index d6b007b..7dc850d 100644 --- a/empathy.js +++ b/empathy.js @@ -641,6 +641,15 @@ class Empathy extends Game { /* And broadcast the scores to all connected clients. */ this.broadcast_event_object('scores', this.state.scores); } + + restore(data) { + super.restore(data); + this.state.players_answering = new Set(this.state.players_answering); + this.state.end_answers = new Set(this.state.end_answers); + this.state.players_judging = new Set(this.state.players_judging); + this.state.end_judging = new Set(this.state.end_judging); + this.state.new_game_votes = new Set(this.state.new_game_votes); + } } Empathy.router = express.Router(); diff --git a/letterrip.js b/letterrip.js index a1e4fc8..3bdeaad 100644 --- a/letterrip.js +++ b/letterrip.js @@ -524,6 +524,11 @@ class LetterRip extends Game { })}\n\n`); } } + + restore(data) { + super.restore(data); + this.state.stuck = new Set(this.state.stuck); + } } LetterRip.router = express.Router();