retrieve game number from message
authorLaurent Mazet <mazet@softndesign.org>
Tue, 11 Feb 2025 22:30:34 +0000 (23:30 +0100)
committerLaurent Mazet <mazet@softndesign.org>
Tue, 11 Feb 2025 22:30:34 +0000 (23:30 +0100)
server/trivabble-server.js

index 8fd47e833220c87c146f2186cd00bbe61196aa0b..97c9862598e70a14788471c6d9ea35b3e08a6261 100644 (file)
@@ -480,16 +480,22 @@ function countTiles(rack) {
 
 function joinGame(gameNumber, message) {
     if (!gameNumber) {
-        gameNumber = newGameId();
-        if (message) {
-            //message.gameNumber = gameNumber;
-            gameNumber = message.gameNumber;
-        }
+        gameNumber = ((message) && (parseInt(message.gameNumber) > 0)) ? message.gameNumber : newGameId();
     }
+    message.gameNumber = gameNumber;
+
 
-    let game = games[gameNumber] || (games[gameNumber] = new Game());
-    if ((message) && (message.bagFactor) && (message.bagFactor != game.factor)) {
-        game.init(message.boardLang, message.boardLabel, message.bagFactor);
+    let game;
+    if (games[gameNumber]) {
+        debuglog("Load game: ", gameNumber);
+        game = games[gameNumber];
+    } else {
+        debuglog("Create new game: ", gameNumber);
+        game = games[gameNumber] = new Game();
+        if ((message) && (message.boardLang) && (message.boardLabel) && (message.bagFactor) &&
+            ((message.boardLang !== game.lang) || (message.boardLabel !== game.label) || (message.bagFactor !== game.factor))) {
+            game.init(message.boardLang, message.boardLabel, message.bagFactor);
+        }
     }
 
     return {gameNumber, game};