X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fcomponents%2FBaseGame.vue;h=ee8b1fcbd6bbc46d687bea3aa2c7d699a7381d54;hb=95bc4bf5248120712946500416543bbfc6b7ae85;hp=61c67dece3d7555b76d4c1ddb1cfdb7e5e630ac2;hpb=1b56b73614509d1dca8c4353f18fb78349940cf8;p=vchess.git diff --git a/client/src/components/BaseGame.vue b/client/src/components/BaseGame.vue index 61c67dec..ee8b1fcb 100644 --- a/client/src/components/BaseGame.vue +++ b/client/src/components/BaseGame.vue @@ -92,6 +92,7 @@ export default { moves: [], cursor: -1, //index of the move just played lastMove: null, + touchLastClick: "", firstMoveNumber: 0, //for printing incheck: [], //for Board inMultimove: false, @@ -434,8 +435,32 @@ export default { // Some variants make use of a single click at specific times: const move_s = this.vr.doClick(square); if (!!move_s) { - if (!Array.isArray(move_s)) this.play(move_s); - else this.$refs["board"].choices = move_s; + const playMove = () => { + if (!Array.isArray(move_s)) this.play(move_s); + 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 + 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(); } }, // "light": if gotoMove() or gotoEnd()