X-Git-Url: https://git.auder.net/img/rock_paper_scissors_lizard_spock.gif?a=blobdiff_plain;f=public%2Fjavascripts%2Fcomponents%2Fgame.js;h=186c027c698199d4421e1da186f21701c06ef47b;hb=b5fb8e693dc82037eec2617a7dc49d838a9a8441;hp=16e1fdbb739ad139fcbf3f97e1852e06b84ba4e3;hpb=86c9843cd04717d61f373ebaf3a1fdf21fd5a60f;p=vchess.git diff --git a/public/javascripts/components/game.js b/public/javascripts/components/game.js index 16e1fdbb..186c027c 100644 --- a/public/javascripts/components/game.js +++ b/public/javascripts/components/game.js @@ -326,7 +326,7 @@ Vue.component('my-game', { ] ); } - if (this.mode == "friend") + if (["friend","problem"].includes(this.mode)) { actionArray = actionArray.concat( [ @@ -778,7 +778,7 @@ Vue.component('my-game', { h('h3', { domProps: { innerHTML: "Show solution" }, - on: { click: "toggleShowSolution" } + on: { click: this.toggleShowSolution }, } ), h('p', @@ -969,9 +969,10 @@ Vue.component('my-game', { methods: { toggleShowSolution: function() { let problemSolution = document.getElementById("problem-solution"); - problemSolution.style.display = problemSolution.style.display == "none" - ? "block" - : "none"; + problemSolution.style.display = + !problemSolution.style.display || problemSolution.style.display == "none" + ? "block" + : "none"; }, download: function() { let content = document.getElementById("pgn-game").innerHTML; @@ -1142,7 +1143,7 @@ Vue.component('my-game', { this.fenStart = localStorage.getItem(prefix+"fenStart"); } else - this.fenStart = fen; + this.fenStart = V.ParseFen(fen).position; //this is enough if (mode=="human") { // Opponent found! @@ -1168,6 +1169,8 @@ Vue.component('my-game', { }, playComputerMove: function() { const timeStart = Date.now(); + // TODO: next call asynchronous (avoid freezing interface while computer "think"). + // This would also allow to remove some artificial setTimeouts const compMove = this.vr.getComputerMove(); // (first move) HACK: avoid selecting elements before they appear on page: const delay = Math.max(250-(Date.now()-timeStart), 0); @@ -1375,7 +1378,18 @@ Vue.component('my-game', { undoInGame: function() { const lm = this.vr.lastMove; if (!!lm) + { this.vr.undo(lm); + const lmBefore = this.vr.lastMove; + if (!!lmBefore) + { + this.vr.undo(lmBefore); + this.incheck = this.vr.getCheckSquares(lmBefore); + this.vr.play(lmBefore, "ingame"); + } + else + this.incheck = []; + } }, }, })