projects
/
vchess.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix enter/exit analyze mode in the middle of a multi-move
[vchess.git]
/
client
/
src
/
components
/
BaseGame.vue
diff --git
a/client/src/components/BaseGame.vue
b/client/src/components/BaseGame.vue
index
ae6c128
..
7424aa4
100644
(file)
--- a/
client/src/components/BaseGame.vue
+++ b/
client/src/components/BaseGame.vue
@@
-40,7
+40,7
@@
div#baseGame
img.inline(src="/images/icons/play.svg")
button(@click="gotoEnd()")
img.inline(src="/images/icons/fast-forward.svg")
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"
#movesList
MoveList(
:show="showMoves"
@@
-258,8
+258,11
@@
export default {
else this.lastMove = null;
},
toggleAnalyze: function() {
else this.lastMove = null;
},
toggleAnalyze: function() {
+ // Autoplay has priority:
+ if (this.autoplay) return;
if (this.mode != "analyze") {
// Enter analyze mode:
if (this.mode != "analyze") {
// Enter analyze mode:
+ if (this.inMultimove) this.cancelCurrentMultimove();
this.gameMode = this.mode; //was not 'analyze'
this.mode = "analyze";
this.gameCursor = this.cursor;
this.gameMode = this.mode; //was not 'analyze'
this.mode = "analyze";
this.gameCursor = this.cursor;
@@
-345,7
+348,7
@@
export default {
}
else if (this.cursor < this.moves.length - 1) {
this.autoplay = true;
}
else if (this.cursor < this.moves.length - 1) {
this.autoplay = true;
- this.play();
+ this.play(
null, null, null, "autoplay"
);
}
},
// Animate an elementary move
}
},
// Animate an elementary move
@@
-404,10
+407,12
@@
export default {
if (!!move) this.play(move);
},
// "light": if gotoMove() or gotoEnd()
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;
// 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 (
// Forbid playing outside analyze mode, except if move is received.
// Sufficient condition because Board already knows which turn it is.
if (
@@
-519,7
+524,7
@@
export default {
this.score = computeScore();
if (this.autoplay) {
if (this.cursor < this.moves.length - 1)
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)
else {
this.autoplay = false;
if (this.stackToPlay.length > 0)
@@
-580,7
+585,7
@@
export default {
// "light": if gotoMove() or gotoBegin()
undo: function(move, light) {
// Freeze while choices are shown:
// "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();
this.$refs["board"].resetCurrentAttempt();
if (this.inMultimove) {
this.cancelCurrentMultimove();
@@
-605,7
+610,7
@@
export default {
}
},
gotoMove: function(index) {
}
},
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.$refs["board"].resetCurrentAttempt();
if (this.inMultimove) this.cancelCurrentMultimove();
if (index == this.cursor) return;
@@
-624,7
+629,7
@@
export default {
this.emitFenIfAnalyze();
},
gotoBegin: function() {
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.$refs["board"].resetCurrentAttempt();
if (this.inMultimove) this.cancelCurrentMultimove();
const minCursor =
@@
-637,7
+642,7
@@
export default {
this.emitFenIfAnalyze();
},
gotoEnd: function() {
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);
this.$refs["board"].resetCurrentAttempt();
if (this.cursor == this.moves.length - 1) return;
this.gotoMove(this.moves.length - 1);
@@
-676,6
+681,9
@@
export default {
padding-top: 5px
padding-bottom: 5px
padding-top: 5px
padding-bottom: 5px
+p#fenAnalyze
+ margin: 5px
+
.in-autoplay
background-color: #FACF8C
.in-autoplay
background-color: #FACF8C