X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=client%2Fsrc%2Fcomponents%2FBaseGame.vue;h=3446a0366a7130ab8c7dfdef03122f0101dd5301;hp=c4ffe5cafe9128930d50695ad242a3d8c47ea43f;hb=f54f4c26b4c820b14aca298e94644efb20beeed6;hpb=84fc0f02d3d399af66c40b3e9994f67b415ffd0e diff --git a/client/src/components/BaseGame.vue b/client/src/components/BaseGame.vue index c4ffe5ca..3446a036 100644 --- a/client/src/components/BaseGame.vue +++ b/client/src/components/BaseGame.vue @@ -178,12 +178,15 @@ export default { const parsedFen = V.ParseFen(game.fenStart); const firstMoveColor = parsedFen.turn; this.firstMoveNumber = Math.floor(parsedFen.movesCount / 2); + let L = this.moves.length; this.moves.forEach(move => { // Strategy working also for multi-moves: if (!Array.isArray(move)) move = [move]; - move.forEach(m => { + move.forEach((m,idx) => { m.notation = this.vr.getNotation(m); this.vr.play(m); + if (idx < L - 1 && this.vr.getCheckSquares(this.vr.turn).length > 0) + m.notation += "+"; }); }); if (firstMoveColor == "b") { @@ -194,9 +197,15 @@ export default { end: { x: -1, y: -1 }, fen: game.fenStart }); + L++; } this.positionCursorTo(this.moves.length - 1); this.incheck = this.vr.getCheckSquares(this.vr.turn); + const score = this.vr.getCurrentScore(); + if (["1-0","0-1"].includes(score)) + this.moves[L - 1].notation += "#"; + else if (this.vr.getCheckSquares(this.vr.turn).length > 0) + this.moves[L - 1].notation += "+"; }, positionCursorTo: function(index) { this.cursor = index; @@ -349,6 +358,12 @@ export default { }; const computeScore = () => { const score = this.vr.getCurrentScore(); + if (!navigate) { + if (["1-0","0-1"].includes(score)) + this.lastMove.notation += "#"; + else if (this.vr.getCheckSquares(this.vr.turn).length > 0) + this.lastMove.notation += "+"; + } if (score != "*" && this.game.mode == "analyze") { const message = getScoreMessage(score); // Just show score on screen (allow undo) @@ -366,15 +381,15 @@ export default { this.incheck = this.vr.getCheckSquares(this.vr.turn); this.emitFenIfAnalyze(); this.inMultimove = false; - if (!noemit) var score = computeScore(); + this.score = computeScore(); if (this.game.mode != "analyze") { - const L = this.moves.length; - if (!noemit) + if (!noemit) { // Post-processing (e.g. computer play). + const L = this.moves.length; // NOTE: always emit the score, even in unfinished, // to tell Game::processMove() that it's not a received move. - this.$emit("newmove", this.moves[L-1], { score: score }); - else { + this.$emit("newmove", this.moves[L-1], { score: this.score }); + } else { this.inPlay = false; if (this.stackToPlay.length > 0) // Move(s) arrived in-between @@ -394,7 +409,7 @@ export default { if (!light) { this.lastMove = move[move.length-1]; this.incheck = this.vr.getCheckSquares(this.vr.turn); - computeScore(); + this.score = computeScore(); this.emitFenIfAnalyze(); } this.cursor++;