Fixes
[vchess.git] / client / src / components / ComputerGame.vue
index 402bc7f..b1d2b37 100644 (file)
@@ -1,5 +1,11 @@
 <template lang="pug">
-BaseGame(:game="game" :vr="vr" @newmove="processMove" @gameover="gameOver")
+BaseGame(
+  ref="basegame"
+  :game="game"
+  :vr="vr"
+  @newmove="processMove"
+  @gameover="gameOver"
+)
 </template>
 
 <script>
@@ -36,7 +42,6 @@ export default {
       }
     }
   },
-  // Modal end of game, and then sub-components
   created: function() {
     // Computer moves web worker logic:
     this.compWorker = new Worker();
@@ -47,18 +52,18 @@ export default {
         this.$emit("game-stopped"); //no more moves: mate or stalemate
         return; //after game ends, no more moves, nothing to do
       }
-      if (!Array.isArray(compMove)) compMove = [compMove]; //to deal with MarseilleRules
+      if (!Array.isArray(compMove)) compMove = [compMove]; //potential multi-move
       // Small delay for the bot to appear "more human"
       const delay = Math.max(500 - (Date.now() - this.timeStart), 0);
       setTimeout(() => {
         if (this.currentUrl != document.location.href) return; //page change
-        // NOTE: Dark and 2-moves are incompatible
-        const animate = this.gameInfo.vname != "Dark";
+        // NOTE: do not animate move if special display (ShowMoves != "all")
+        const animate = V.ShowMoves == "all";
         const animDelay = animate ? 250 : 0;
         let moveIdx = 0;
         let self = this;
         (function executeMove() {
-          self.$set(self.game, "moveToPlay", compMove[moveIdx++]);
+          self.$refs["basegame"].play(compMove[moveIdx++]);
           if (moveIdx >= compMove.length) {
             self.compThink = false;
             if (self.game.score != "*")
@@ -90,6 +95,8 @@ export default {
       if (mycolor != "w" || this.gameInfo.mode == "auto")
         this.playComputerMove();
     },
+    // NOTE: a "goto" action could lead to an error when comp is thinking,
+    // but it's OK because from the user viewpoint the game just stops.
     playComputerMove: function() {
       this.timeStart = Date.now();
       this.compThink = true;