selectedPiece: null, //moving piece (or clicked piece)
start: null, //pixels coordinates + id of starting square (click or drag)
click: "",
+ clickTime: 0,
settings: store.state.settings
};
},
attrs: {
src:
"/images/pieces/" +
- this.vr.getPpath(this.vr.board[ci][cj], this.userColor, this.score) +
+ this.vr.getPpath(
+ this.vr.board[ci][cj],
+ // Extra args useful for some variants:
+ this.userColor,
+ this.score,
+ this.orientation) +
".svg"
}
})
if (!!this.vr.reserve) elementArray.push(reserveBottom);
const boardElt = document.querySelector(".game");
if (this.choices.length > 0 && !!boardElt) {
- //no choices to show at first drawing
+ // No choices to show at first drawing
const squareWidth = boardElt.offsetWidth / sizeY;
const offset = [boardElt.offsetTop, boardElt.offsetLeft];
+ // TODO: multi-rows if more than V.size.y pieces (as inEightpieces)
const choices = h(
"div",
{
}
},
this.choices.map(m => {
- //a "choice" is a move
+ // A "choice" is a move
+ const applyMove = (e) => {
+ e.stopPropagation();
+ // Force a delay between move is shown and clicked
+ // (otherwise a "double-click" bug might occur)
+ if (Date.now() - this.clickTime < 200) return;
+ this.play(m);
+ this.choices = [];
+ };
+ const onClick =
+ this.mobileBrowser
+ ? { touchend: applyMove }
+ : { mouseup: applyMove };
return h(
"div",
{
attrs: {
src:
"/images/pieces/" +
- this.vr.getPpath(m.appear[0].c + m.appear[0].p) +
+ this.vr.getPPpath(
+ m.appear[0].c + m.appear[0].p,
+ // Extra arg useful for some variants:
+ this.orientation) +
".svg"
},
class: { "choice-piece": true },
- on: {
- click: () => {
- this.play(m);
- this.choices = [];
- }
- }
+ on: onClick
})
]
);
let endSquare = getSquareFromId(landing.id);
let moves = this.findMatchingMoves(endSquare);
this.possibleMoves = [];
- if (moves.length > 1) this.choices = moves;
- else if (moves.length == 1) this.play(moves[0]);
+ if (moves.length > 1) {
+ this.clickTime = Date.now();
+ this.choices = moves;
+ } else if (moves.length == 1) this.play(moves[0]);
// else: forbidden move attempt
},
findMatchingMoves: function(endSquare) {
// TODO: no predefined highlight colors, but layers. How?
.light-square.lichess.highlight-light
- background-color: #cdd26a !important
+ background-color: #cdd26a
.dark-square.lichess.highlight-dark
- background-color: #aaa23a !important
+ background-color: #aaa23a
.light-square.chesscom.highlight-light
- background-color: #f7f783 !important
+ background-color: #f7f783
.dark-square.chesscom.highlight-dark
- background-color: #bacb44 !important
+ background-color: #bacb44
.light-square.chesstempo.highlight-light
- background-color: #9f9fff !important
+ background-color: #9f9fff
.dark-square.chesstempo.highlight-dark
- background-color: #557fff !important
+ background-color: #557fff
</style>