X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fcomponents%2FComputerGame.vue;h=a4a53f65ff34d44151f15d5fe2f49d9a4ba9fdff;hb=0e16cb26f6380f57f1079ece9bdb654243073bde;hp=52cfc5e2e0d3d55f63743ed03f1aebff59819fa4;hpb=7b3cf1b79954a47000527dd0c3f0fc1cecb5315d;p=vchess.git diff --git a/client/src/components/ComputerGame.vue b/client/src/components/ComputerGame.vue index 52cfc5e2..a4a53f65 100644 --- a/client/src/components/ComputerGame.vue +++ b/client/src/components/ComputerGame.vue @@ -14,7 +14,7 @@ export default { BaseGame, }, // gameInfo: fen + mode + vname - // mode: "auto" (game comp vs comp), "versus" (normal) or "analyze" + // mode: "auto" (game comp vs comp) or "versus" (normal) props: ["gameInfo"], data: function() { return { @@ -35,7 +35,6 @@ export default { if (newScore != "*") { this.game.score = newScore; //user action - this.game.mode = "analyze"; if (!this.compThink) this.$emit("game-stopped"); //otherwise wait for comp } @@ -58,13 +57,15 @@ export default { // 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"); const animDelay = (animate ? 250 : 0); let moveIdx = 0; let self = this; (function executeMove() { - self.$refs.basegame.play(compMove[moveIdx++], animate); + self.$set(self.game, "moveToPlay", compMove[moveIdx++]); if (moveIdx >= compMove.length) { self.compThink = false; @@ -92,6 +93,7 @@ export default { let players = [{name:"Myself"},{name:"Computer"}]; if (mycolor == "b") players = players.reverse(); + this.currentUrl = document.location.href; //to avoid playing outside page // NOTE: fen and fenStart are redundant in game object this.game = Object.assign({}, this.gameInfo, @@ -111,6 +113,8 @@ export default { this.compWorker.postMessage(["askmove"]); }, processMove: function(move) { + if (this.game.score != "*") + return; // Send the move to web worker (including his own moves) this.compWorker.postMessage(["newmove",move]); // subTurn condition for Marseille (and Avalanche) rules @@ -120,9 +124,9 @@ export default { this.playComputerMove(); } }, - gameOver: function(score) { + gameOver: function(score, scoreMsg) { this.game.score = score; - this.game.mode = "analyze"; + this.game.scoreMsg = scoreMsg; this.$emit("game-over", score); //bubble up to Rules.vue }, },