X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fcomponents%2FBaseGame.vue;h=1996ded67110bb374dbdce4f5fb054a0f5d6fe66;hb=93ce6119a67b8510762dd68a07936b6f22f2ad67;hp=ddfe1e7ec3969a1d5ff490c007139868c3387518;hpb=6e47d367d4b1b4500bc46d65b44c5e55b52221bb;p=vchess.git diff --git a/client/src/components/BaseGame.vue b/client/src/components/BaseGame.vue index ddfe1e7e..1996ded6 100644 --- a/client/src/components/BaseGame.vue +++ b/client/src/components/BaseGame.vue @@ -395,6 +395,8 @@ export default { play: function(move, received, light, noemit) { // Freeze while choices are shown: if (this.$refs["board"].choices.length > 0) return; + // The board may show some the possible moves: (TODO: bad solution) + this.$refs["board"].resetCurrentAttempt(); if (!!noemit) { if (this.inPlay) { // Received moves in observed games can arrive too fast: @@ -409,6 +411,8 @@ export default { smove.unambiguous = V.GetUnambiguousNotation(smove); this.vr.play(smove); this.lastMove = smove; + // Is opponent (or me) in check? + this.incheck = this.vr.getCheckSquares(this.vr.turn); if (!this.inMultimove) { // Condition is "!navigate" but we mean "!this.autoplay" if (!navigate) { @@ -470,8 +474,6 @@ export default { if (!smove.fen) // NOTE: only FEN of last sub-move is required (=> setting it here) smove.fen = this.vr.getFen(); - // Is opponent in check? - this.incheck = this.vr.getCheckSquares(this.vr.turn); this.emitFenIfAnalyze(); this.inMultimove = false; this.score = computeScore(); @@ -529,11 +531,9 @@ export default { const L = this.moves.length; let move = this.moves[L-1]; if (!Array.isArray(move)) move = [move]; - for (let i=move.length -1; i >= 0; i--) this.vr.undo(move[i]); + for (let i = move.length - 1; i >= 0; i--) this.vr.undo(move[i]); this.moves.pop(); this.cursor--; - // The board may still show the possible moves: (TODO: bad solution) - this.$refs["board"].resetCurrentAttempt(); this.inMultimove = false; }, cancelLastMove: function() { @@ -545,6 +545,7 @@ export default { undo: function(move, light) { // Freeze while choices are shown: if (this.$refs["board"].choices.length > 0) return; + this.$refs["board"].resetCurrentAttempt(); if (this.inMultimove) { this.cancelCurrentMultimove(); this.incheck = this.vr.getCheckSquares(this.vr.turn); @@ -557,6 +558,7 @@ export default { if (this.cursor < minCursor) return; //no more moves move = this.moves[this.cursor]; } + this.$refs["board"].resetCurrentAttempt(); undoMove(move, this.vr); if (light) this.cursor--; else { @@ -568,6 +570,7 @@ export default { }, gotoMove: function(index) { if (this.$refs["board"].choices.length > 0) return; + this.$refs["board"].resetCurrentAttempt(); if (this.inMultimove) this.cancelCurrentMultimove(); if (index == this.cursor) return; if (index < this.cursor) { @@ -586,6 +589,7 @@ export default { }, gotoBegin: function() { if (this.$refs["board"].choices.length > 0) return; + this.$refs["board"].resetCurrentAttempt(); if (this.inMultimove) this.cancelCurrentMultimove(); const minCursor = this.moves.length > 0 && this.moves[0].notation == "..." @@ -598,6 +602,7 @@ export default { }, gotoEnd: function() { if (this.$refs["board"].choices.length > 0) return; + this.$refs["board"].resetCurrentAttempt(); if (this.cursor == this.moves.length - 1) return; this.gotoMove(this.moves.length - 1); this.emitFenIfAnalyze();