X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fcomponents%2FBaseGame.vue;h=87d18aba804f13f70e63f3012320cbb17f865c6c;hb=a9e1202b681d9d2f814767180183a0b04c58f8ab;hp=79f089e1f3bcaf07eaee1b0ed50590d551b5cc96;hpb=00eef1ca12534a43cb8e2e12155a46c00353eac2;p=vchess.git diff --git a/client/src/components/BaseGame.vue b/client/src/components/BaseGame.vue index 79f089e1..87d18aba 100644 --- a/client/src/components/BaseGame.vue +++ b/client/src/components/BaseGame.vue @@ -51,6 +51,7 @@ div#baseGame :firstNum="firstMoveNumber" :moves="moves" :cursor="cursor" + :vname="game.vname" @download="download" @showrules="showRules" @analyze="toggleAnalyze" @@ -86,6 +87,7 @@ export default { endgameMessage: "", orientation: "w", mode: "", + gameMode: "", score: "*", //'*' means 'unfinished' moves: [], cursor: -1, //index of the move just played @@ -140,7 +142,7 @@ export default { }, canAnalyze: function() { return ( - !!this.game.mode && this.game.mode != "analyze" && + (!this.game.mode || this.game.mode != "analyze") && !!this.vr && this.vr.canAnalyze ); }, @@ -250,12 +252,10 @@ export default { const checkSquares = this.vr.getCheckSquares(); if (checkSquares.length > 0) m.notation += "+"; if (idxM == Lm - 1) m.fen = this.vr.getFen(); - if (idx == L - 1 && idxM == Lm - 1) { - this.incheck = checkSquares; - this.score = this.vr.getCurrentScore(); - if (["1-0", "0-1"].includes(this.score)) m.notation += "#"; - } + if (idx == L - 1 && idxM == Lm - 1) this.incheck = checkSquares; }); + this.score = this.vr.getCurrentScore(); + if (["1-0", "0-1"].includes(this.score)) m.notation += "#"; }); } if (firstMoveColor == "b") { @@ -288,16 +288,16 @@ export default { } if (this.mode != "analyze") { // Enter analyze mode: + this.gameMode = this.mode; //was not 'analyze' this.mode = "analyze"; if (this.inMultimove) this.cancelCurrentMultimove(); - this.gameMode = this.mode; //was not 'analyze' this.gameCursor = this.cursor; this.gameMoves = JSON.parse(JSON.stringify(this.moves)); document.getElementById("analyzeBtn").classList.add("active"); } else { // Exit analyze mode: - this.mode = this.gameMode ; + this.mode = this.gameMode; this.cursor = this.gameCursor; this.moves = this.gameMoves; let fen = this.game.fenStart; @@ -463,11 +463,11 @@ export default { this.stackToPlay.unshift(move); return; } - this.inPlay = true; if (this.mode == "analyze") this.toggleAnalyze(); if (this.cursor < this.moves.length - 1) // To play a received move, cursor must be at the end of the game: this.gotoEnd(); + this.inPlay = true; } // The board may show some possible moves: (TODO: bad solution) this.$refs["board"].resetCurrentAttempt(); @@ -514,8 +514,9 @@ export default { (function executeMove() { const smove = move[moveIdx++]; // NOTE: condition "smove.start.x >= 0" required for Dynamo, - // because second move may be empty. - if (animate && smove.start.x >= 0) { + // because second move may be empty. noHighlight condition + // is used at least for Chakart. + if (animate && smove.start.x >= 0 && !smove.end.noHighlight) { self.animateMove(smove, () => { playSubmove(smove); if (moveIdx < move.length) setTimeout(executeMove, 500);