Add Makruk, Shako and Shogi + a few fixes
[vchess.git] / client / src / components / BaseGame.vue
index 3d8e7eb..8a05376 100644 (file)
@@ -212,6 +212,10 @@ export default {
       this.moves = JSON.parse(JSON.stringify(game.moves || []));
       // Post-processing: decorate each move with notation and FEN
       this.vr = new V(game.fenStart);
+      this.inMultimove = false; //in case of
+      this.$refs["board"].resetCurrentAttempt(); //also in case of
+      let analyseBtn = document.getElementById("analyzeBtn");
+      if (!!analyseBtn) analyseBtn.classList.remove("active");
       const parsedFen = V.ParseFen(game.fenStart);
       const firstMoveColor = parsedFen.turn;
       this.firstMoveNumber = Math.floor(parsedFen.movesCount / 2) + 1;
@@ -258,8 +262,11 @@ export default {
       else this.lastMove = null;
     },
     toggleAnalyze: function() {
+      // Freeze while choices are shown (and autoplay has priority)
+      if (this.$refs["board"].choices.length > 0 || this.autoplay) return;
       if (this.mode != "analyze") {
         // Enter analyze mode:
+        if (this.inMultimove) this.cancelCurrentMultimove();
         this.gameMode = this.mode; //was not 'analyze'
         this.mode = "analyze";
         this.gameCursor = this.cursor;
@@ -278,6 +285,8 @@ export default {
           fen = mv[mv.length-1].fen;
         }
         this.vr = new V(fen);
+        this.inMultimove = false; //in case of
+        this.$refs["board"].resetCurrentAttempt(); //also in case of
         this.incheck = this.vr.getCheckSquares();
         if (this.cursor >= 0) this.lastMove = this.moves[this.cursor];
         else this.lastMove = null;
@@ -587,6 +596,8 @@ export default {
       if (this.inMultimove) {
         this.cancelCurrentMultimove();
         this.incheck = this.vr.getCheckSquares();
+        if (this.cursor >= 0) this.lastMove = this.moves[this.cursor];
+        else this.lastMove = null;
       } else {
         if (!move) {
           const minCursor =