<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>
}
}
},
- // Modal end of game, and then sub-components
created: function() {
// Computer moves web worker logic:
this.compWorker = new Worker();
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 != "*")
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;