command joinGame is not needed anymore
authorRaphaël Jakse <raphael.jakse@univ-grenoble-alpes.fr>
Sun, 5 Apr 2020 08:35:53 +0000 (10:35 +0200)
committerRaphaël Jakse <raphael.jakse@univ-grenoble-alpes.fr>
Sun, 5 Apr 2020 08:38:21 +0000 (10:38 +0200)
trivabble-server.js
trivabble.js

index 784f7964b8ef613174249bf500243b7663c45ff3..f5dc09cf9dbf1f91c6530a178134f04220086a04 100644 (file)
@@ -418,30 +418,30 @@ function countTiles(rack) {
     return count;
 }
 
-function handleCommand(cmd, gameNumber, playerName, response) {
-    var game = games[gameNumber];
+function joinGame(gameNumber, game, playerName) {
+    if (!gameNumber) {
+        gameNumber = newGameId();
+    }
 
-    if (!game && (cmd.cmd !== "joinGame")) {
-        response.write("{\"error\":1,\"reason\":\"Missing or bad game number\"}");
-        return;
+    if (!game) {
+        game = games[gameNumber] = new Game();
     }
 
+    game.playerJoined(playerName);
+
+    return {gameNumber, game};
+}
+
+function handleCommand(cmd, gameNumber, playerName, response) {
+    var game = games[gameNumber];
+
+    ({gameNumber, game} = joinGame(gameNumber, game, playerName));
     game.lastUpdated = new Date();
 
     var rack = null;
 
     switch (cmd.cmd) {
         case "joinGame":
-            if (!gameNumber) {
-                gameNumber = newGameId();
-            }
-
-            if (!game) {
-                game = games[gameNumber] = new Game();
-            }
-
-            game.playerJoined(playerName);
-
             response.write(
                 JSON.stringify({
                     "error": 0,
@@ -659,17 +659,12 @@ function handleCommand(cmd, gameNumber, playerName, response) {
 
 function handleCommands(cmds, responseAndIsES) {
     if (!cmds.cmds || !cmds.cmds.length) {
-        var game = games[cmds.gameNumber];
-
-        if (!game) {
-            writeResponse(responseAndIsES, "{\"error\":1,\"reason\":\"Missing or bad game number\"}", true);
-            return;
-        }
+        var {gameNumber, game} = joinGame(cmds.gameNumber, game, cmds.playerName);
 
         writeResponse(responseAndIsES,
             JSON.stringify({
                 "playerName":       cmds.playerName,
-                "gameNumber":       cmds.gameNumber,
+                "gameNumber":       gameNumber,
                 "letterValues":     game.letterValues,
                 "rack":             game.getPlayerRack(cmds.playerName),
                 "board":            game.board,
index 7960f78e9fa45d6388298edea9f16b7fc909ca5e..8f1761db79d503a7e74297da7cce2a5c5c05fce0 100644 (file)
             return;
         }
 
-        if (!pollingReady && ((data.cmds && data.cmds.length) && data.cmds[0].cmd !== "joinGame")) {
+        if (!pollingReady && (data.cmds && data.cmds.length)) {
             sendCmds();
             setTimeout(send.bind(null, data), POLLING_DELAY);
             return;
         if (number) {
             localStorage.trivabbleGameNumber = number;
         }
-        sendCmds([{cmd:"joinGame"}]);
+        sendCmds();
     }
 
     var audioTileLoaded = false, audioMsgLoaded = false, tilesSound, msgSound;