X-Git-Url: https://git.auder.net/rpsls.js?a=blobdiff_plain;f=client%2Fsrc%2Fcomponents%2FComputerGame.vue;h=b20b8fe14fb05f39bf5d8344118ad14cb13e353c;hb=a154d45ebb7e409cd714d0c517e79c8147bdea69;hp=941016b7377bcd6accf7eb9401df59562e415cc9;hpb=6cd07b4da66403ab2ff751b1c0361fa237cd0ed2;p=vchess.git diff --git a/client/src/components/ComputerGame.vue b/client/src/components/ComputerGame.vue index 941016b7..b20b8fe1 100644 --- a/client/src/components/ComputerGame.vue +++ b/client/src/components/ComputerGame.vue @@ -7,14 +7,13 @@ BaseGame(:game="game" :vr="vr" ref="basegame" import BaseGame from "@/components/BaseGame.vue"; import { store } from "@/store"; import Worker from "worker-loader!@/playCompMove"; - export default { name: "my-computer-game", components: { 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 +34,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 } @@ -66,7 +64,7 @@ export default { 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; @@ -81,12 +79,8 @@ export default { if (!!this.gameInfo.fen) this.launchGame(); }, - // dans variant.js (plutôt room.js) conn gère aussi les challenges - // et les chats dans chat.js. Puis en webRTC, repenser tout ça. methods: { - launchGame: async function() { - const vModule = await import("@/variants/" + this.gameInfo.vname + ".js"); - window.V = vModule.VariantRules; + launchGame: function() { this.compWorker.postMessage(["scripts",this.gameInfo.vname]); this.compWorker.postMessage(["init",this.gameInfo.fen]); this.vr = new V(this.gameInfo.fen); @@ -114,6 +108,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 @@ -123,9 +119,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 }, },