img.inline(src="/images/icons/play.svg")
button(@click="gotoEnd()")
img.inline(src="/images/icons/fast-forward.svg")
- p(v-show="showFen") {{ (!!vr ? vr.getFen() : "") }}
+ p#fenAnalyze(v-show="showFen") {{ (!!vr ? vr.getFen() : "") }}
#movesList
MoveList(
:show="showMoves"
}
else if (this.cursor < this.moves.length - 1) {
this.autoplay = true;
- this.play();
+ this.play(null, null, null, "autoplay");
}
},
// Animate an elementary move
if (!!move) this.play(move);
},
// "light": if gotoMove() or gotoEnd()
- play: function(move, received, light) {
+ play: function(move, received, light, autoplay) {
// Freeze while choices are shown:
if (this.$refs["board"].choices.length > 0) return;
const navigate = !move;
+ // Forbid navigation during autoplay:
+ if (navigate && this.autoplay && !autoplay) return;
// Forbid playing outside analyze mode, except if move is received.
// Sufficient condition because Board already knows which turn it is.
if (
else this.lastMove.notation += "#";
}
}
- if (score != "*" && this.mode == "analyze") {
+ if (score != "*" && ["analyze", "versus"].includes(this.mode)) {
const message = getScoreMessage(score);
- // Just show score on screen (allow undo)
+ // Show score on screen
this.showEndgameMsg(score + " . " + this.st.tr[message]);
}
return score;
this.score = computeScore();
if (this.autoplay) {
if (this.cursor < this.moves.length - 1)
- setTimeout(this.play, 1000);
+ setTimeout(() => this.play(null, null, null, "autoplay"), 1000);
else {
this.autoplay = false;
if (this.stackToPlay.length > 0)
// "light": if gotoMove() or gotoBegin()
undo: function(move, light) {
// Freeze while choices are shown:
- if (this.$refs["board"].choices.length > 0) return;
+ if (this.$refs["board"].choices.length > 0 || this.autoplay) return;
this.$refs["board"].resetCurrentAttempt();
if (this.inMultimove) {
this.cancelCurrentMultimove();
}
},
gotoMove: function(index) {
- if (this.$refs["board"].choices.length > 0) return;
+ if (this.$refs["board"].choices.length > 0 || this.autoplay) return;
this.$refs["board"].resetCurrentAttempt();
if (this.inMultimove) this.cancelCurrentMultimove();
if (index == this.cursor) return;
this.emitFenIfAnalyze();
},
gotoBegin: function() {
- if (this.$refs["board"].choices.length > 0) return;
+ if (this.$refs["board"].choices.length > 0 || this.autoplay) return;
this.$refs["board"].resetCurrentAttempt();
if (this.inMultimove) this.cancelCurrentMultimove();
const minCursor =
this.emitFenIfAnalyze();
},
gotoEnd: function() {
- if (this.$refs["board"].choices.length > 0) return;
+ if (this.$refs["board"].choices.length > 0 || this.autoplay) return;
this.$refs["board"].resetCurrentAttempt();
if (this.cursor == this.moves.length - 1) return;
this.gotoMove(this.moves.length - 1);
padding-top: 5px
padding-bottom: 5px
+p#fenAnalyze
+ margin: 5px
+
.in-autoplay
background-color: #FACF8C