baseGameDiv.tabIndex = 0;
baseGameDiv.addEventListener("click", this.focusBg);
baseGameDiv.addEventListener("keydown", this.handleKeys);
- baseGameDiv.addEventListener("wheel", this.handleScroll);
+ if (this.st.settings.scrollmove)
+ baseGameDiv.addEventListener("wheel", this.handleScroll);
}
document.getElementById("eogDiv")
.addEventListener("click", processModalClick);
pgn += '[Url "' + params.serverUrl + '/game/' + this.game.id + '"]\n';
if (!!this.game.cadence)
pgn += '[Cadence "' + this.game.cadence + '"]\n';
+ pgn += '[Options "' + JSON.stringify(this.game.options) + '"]\n';
pgn += '\n';
for (let i = 0; i < this.moves.length; i += 2) {
if (i > 0) pgn += " ";
else this.$refs["board"].choices = move_s;
}
if ("ontouchstart" in window) {
+ const squareId = "sq-" + square[0] + "-" + square[1];
+ const highlight = function(on, sq) {
+ let elt = document.getElementById(sq);
+ if (!!elt) {
+ if (on) elt.classList.add("touch-hover");
+ else elt.classList.remove("touch-hover");
+ }
+ }
// Touch screen (smartphone): require confirmation
- if (this.touchLastClick == square) playMove();
- this.touchLastClick = square;
+ const squareStr = square[0] + "_" + square[1]
+ if (this.touchLastClick == squareId) {
+ highlight(false, squareId);
+ playMove();
+ }
+ else {
+ highlight(true, squareId);
+ highlight(false, this.touchLastClick);
+ }
+ this.touchLastClick = squareId;
}
else playMove();
}
}
this.inMultimove = true; //potentially
this.cursor++;
- } else if (!navigate) {
+ }
+ else if (!navigate) {
// Already in the middle of a multi-move
const L = this.moves.length;
if (!Array.isArray(this.moves[L-1]))
if (moveIdx < move.length) setTimeout(executeMove, 500);
else afterMove(smove, initurn);
});
- } else {
+ }
+ else {
playSubmove(smove);
if (moveIdx < move.length) executeMove();
else afterMove(smove, initurn);
}
}
if (score != "*" && ["analyze", "versus"].includes(this.mode)) {
- const message = getScoreMessage(score);
+ const message = getScoreMessage(score, V.ReverseColors);
// Show score on screen
this.showEndgameMsg(score + " . " + this.st.tr[message]);
}
const L = this.moves.length;
// NOTE: always emit the score, even in unfinished
this.$emit("newmove", this.moves[L-1], { score: this.score });
- } else {
+ }
+ else {
this.inPlay = false;
if (this.stackToPlay.length > 0)
// Move(s) arrived in-between
this.incheck = this.vr.getCheckSquares();
if (this.cursor >= 0) this.lastMove = this.moves[this.cursor];
else this.lastMove = null;
- } else {
+ }
+ else {
if (!move) {
const minCursor =
this.moves.length > 0 && this.moves[0].notation == "..."