who messed up?
authorRaphaël Jakse <raphael.trivabble@jakse.fr>
Sun, 22 Nov 2020 21:20:43 +0000 (22:20 +0100)
committerRaphaël Jakse <raphael.trivabble@jakse.fr>
Sun, 22 Nov 2020 21:20:43 +0000 (22:20 +0100)
public/alert.js
public/trivabble.js

index b83146567663a071e8cde9bba7656578177596c5..e4901cefd31c3cc09d609632586f555a8ed8838c 100644 (file)
         for (const key of options.choices) {
             [].push.call(alertSelect.options, new Option(key, key));
         }
-        alertSelect.value = defaultValue;
+        alertSelect.value = alertInput.value = defaultValue;
 
         divAlertContent.textContent = msg;
         divAlertInput.style.display = "";
index 0914a0cff459c4054e8bfc9fcce3590ad959abc7..7e0ede41e033f994cdd735a1d3f45f7abaa81215 100644 (file)
     }
 
     function setCell(index, letter, highlight) {
+        if (lastPlayer) {
+            if (letter) {
+                currentTilePlayed[index] = letter;
+            } else {
+                delete currentTilePlayed[index];
+            }
+        }
+
         setTileParent(boardCells[index].getElementsByClassName("tile-placeholder")[0], letter, highlight);
     }
 
             tablePlayers[currentPlayer].classList.remove("current-player");
         }
 
-        currentTilePlayed = {};
         currentPlayer = player;
         refreshCurrentPlayer();
     }
         refreshCurrentPlayer();
     }
 
+    function handleLastPlayer(data) {
+        if (data.player) {
+            if (lastPlayer !== data.player) {
+                currentTilePlayed = {};
+            }
+            lastPlayer = data.player;
+        }
+    }
+
     function applyAction(data) {
         switch (data.action) {
             case "pushBag": //TODO
                 sendCmds([{cmd: "hello"}]);
 
                 lastPlayer = null;
+                currentTilePlayed = {};
                 break;
 
             case "moveLetter":
+                handleLastPlayer(data);
+
                 if (data.from === "board") {
                     setCell(data.indexFrom, "");
                 } else if (data.from === "rack") {
                 }
 
                 if (data.to === "board") {
-                    setCell(data.indexTo, data.letter, Object.prototype.hasOwnProperty.call(data, "player") && data.player !== getSetting("PlayerName"));
+                    setCell(
+                        data.indexTo,
+                        data.letter,
+                        data.player && data.player !== getSetting("PlayerName")
+                    );
                 } else if (data.to === "rack") {
                     setRackCell(data.indexTo, data.letter);
                 }
 
-                if (data.player) {
-                    lastPlayer = data.player;
-                }
-
                 break;
+
             case "setCell":
-                setCell(data.indexTo, data.letter, Object.prototype.hasOwnProperty.call(data, "player") && data.player !== getSetting("PlayerName"));
+                handleLastPlayer(data);
 
-                if (data.player) {
-                    lastPlayer = data.player;
-                }
+                setCell(
+                    data.indexTo,
+                    data.letter,
+                    data.player && data.player !== getSetting("PlayerName")
+                );
 
                 if ((data.letter !== "") && (currentTilePlayed[data.indexTo] === "-")) {
                     currentTilePlayed[data.indexTo] = data.letter;
                 }
+
                 break;
+
             case "setRackCell":
                 setRackCell(data.indexTo, data.letter);
         }
                     return;
                 }
 
+                currentTilePlayed = {};
+
                 sendCmds([{
                     cmd: "score",
                     player: name,