X-Git-Url: https://git.auder.net/images/pieces/Cwda/bt.svg?a=blobdiff_plain;f=client%2Fsrc%2Fcomponents%2FBaseGame.vue;h=393b9ccf41a8d50ad9912113e8188a563f0b0588;hb=c4f91d3ff756bf1c8948433e0584e0e4235f3524;hp=e8ca6967e28a8421c1173d594ec23b14375ca182;hpb=4b0384faf03d3842ba2f80ccd6d104c5e34a355e;p=vchess.git diff --git a/client/src/components/BaseGame.vue b/client/src/components/BaseGame.vue index e8ca6967..393b9ccf 100644 --- a/client/src/components/BaseGame.vue +++ b/client/src/components/BaseGame.vue @@ -145,7 +145,7 @@ export default { endGame: function(score) { this.score = score; this.showScoreMsg(score); - this.$emit("gameover"); //score not required (TODO?) + this.$emit("gameover", score); }, animateMove: function(move) { let startSquare = document.getElementById(getSquareId(move.start)); @@ -175,11 +175,11 @@ export default { this.play(move); }, 250); }, - play: function(move, programmatic) { - let navigate = !move; + play: function(move, receive, noanimate) { + const navigate = !move; // Forbid playing outside analyze mode when cursor isn't at moves.length-1 // (except if we receive opponent's move, human or computer) - if (!navigate && !this.analyze && !programmatic + if (!navigate && !this.analyze && !receive && this.cursor < this.moves.length-1) { return; @@ -190,31 +190,34 @@ export default { return; //no more moves move = this.moves[this.cursor+1]; } - if (!!programmatic) //computer or (remote) human opponent + if (!!receive && !noanimate) //opponent move, variant != "Dark" { if (this.cursor < this.moves.length-1) this.gotoEnd(); //required to play the move return this.animateMove(move); } - // Not programmatic, or animation is over - if (!move.notation) - move.notation = this.vr.getNotation(move); - if (!move.color) + if (!navigate) + { move.color = this.vr.turn; + move.notation = this.vr.getNotation(move); + } + // Not programmatic, or animation is over this.vr.play(move); this.cursor++; this.lastMove = move; - if (!move.fen) - move.fen = this.vr.getFen(); if (this.st.settings.sound == 2) new Audio("/sounds/move.mp3").play().catch(err => {}); - if (!navigate && (this.score == "*" || this.analyze)) + if (!navigate) { - // Stack move on movesList at current cursor - if (this.cursor == this.moves.length) - this.moves.push(move); - else - this.moves = this.moves.slice(0,this.cursor).concat([move]); + move.fen = this.vr.getFen(); + if (this.score == "*" || this.analyze) + { + // Stack move on movesList at current cursor + if (this.cursor == this.moves.length) + this.moves.push(move); + else + this.moves = this.moves.slice(0,this.cursor).concat([move]); + } } // Is opponent in check? this.incheck = this.vr.getCheckSquares(this.vr.turn); @@ -230,7 +233,7 @@ export default { this.$emit("newmove", move); //post-processing (e.g. computer play) }, undo: function(move) { - let navigate = !move; + const navigate = !move; if (navigate) { if (this.cursor < 0)