Fix PocketKnight + add Screen variant
[vchess.git] / client / src / components / BaseGame.vue
index 5f825c9..f101702 100644 (file)
@@ -440,9 +440,25 @@ export default {
           else this.$refs["board"].choices = move_s;
         }
         if ("ontouchstart" in window) {
+          const squareId = "sq-" + square[0] + "-" + square[1];
+          const highlight = function(on, sq) {
+            let elt = document.getElementById(sq);
+            if (!!elt) {
+              if (on) elt.classList.add("touch-hover");
+              else elt.classList.remove("touch-hover");
+            }
+          }
           // Touch screen (smartphone): require confirmation
-          if (this.touchLastClick == square) playMove();
-          this.touchLastClick = square;
+          const squareStr = square[0] + "_" + square[1]
+          if (this.touchLastClick == squareId) {
+            highlight(false, squareId);
+            playMove();
+          }
+          else {
+            highlight(true, squareId);
+            highlight(false, this.touchLastClick);
+          }
+          this.touchLastClick = squareId;
         }
         else playMove();
       }
@@ -504,7 +520,8 @@ export default {
           }
           this.inMultimove = true; //potentially
           this.cursor++;
-        } else if (!navigate) {
+        }
+        else if (!navigate) {
           // Already in the middle of a multi-move
           const L = this.moves.length;
           if (!Array.isArray(this.moves[L-1]))
@@ -532,7 +549,8 @@ export default {
               if (moveIdx < move.length) setTimeout(executeMove, 500);
               else afterMove(smove, initurn);
             });
-          } else {
+          }
+          else {
             playSubmove(smove);
             if (moveIdx < move.length) executeMove();
             else afterMove(smove, initurn);
@@ -584,7 +602,8 @@ export default {
               const L = this.moves.length;
               // NOTE: always emit the score, even in unfinished
               this.$emit("newmove", this.moves[L-1], { score: this.score });
-            } else {
+            }
+            else {
               this.inPlay = false;
               if (this.stackToPlay.length > 0)
                 // Move(s) arrived in-between
@@ -643,7 +662,8 @@ export default {
         this.incheck = this.vr.getCheckSquares();
         if (this.cursor >= 0) this.lastMove = this.moves[this.cursor];
         else this.lastMove = null;
-      } else {
+      }
+      else {
         if (!move) {
           const minCursor =
             this.moves.length > 0 && this.moves[0].notation == "..."