X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fcomponents%2FBaseGame.vue;h=0e0f37208858c87f933b209be4a963dc5e167da7;hb=677fe285f1137d1d3e672dcf2dae3ac6e943be37;hp=1240bcb283aeb98bf8c174be078d7ce3b13c7341;hpb=602d6befd30793111d3fda6e733f73e08d8b7a30;p=vchess.git diff --git a/client/src/components/BaseGame.vue b/client/src/components/BaseGame.vue index 1240bcb2..0e0f3720 100644 --- a/client/src/components/BaseGame.vue +++ b/client/src/components/BaseGame.vue @@ -17,7 +17,7 @@ div#baseGame(tabindex=-1 @click="() => focusBg()" #boardContainer Board(:vr="vr" :last-move="lastMove" :analyze="analyze" :user-color="game.mycolor" :orientation="orientation" - :vname="game.vname" @play-move="play") + :vname="game.vname" :incheck="incheck" @play-move="play") #turnIndicator(v-if="game.vname=='Dark' && game.score=='*'") | {{ turn }} #controls @@ -29,11 +29,11 @@ div#baseGame(tabindex=-1 @click="() => focusBg()" #pgnDiv #downloadDiv(v-if="game.vname!='Dark' || game.score!='*'") a#download(href="#") - button(@click="download") {{ st.tr["Download PGN"] }} + button(@click="download") {{ st.tr["Download"] }} PGN button(onClick="doClick('modalAdjust')") ⤢ button(v-if="game.vname!='Dark' && game.mode!='analyze'" @click="analyzePosition") - | {{ st.tr["Analyze"] }} + | {{ st.tr["Analyse"] }} // NOTE: rather ugly hack to avoid showing twice "rules" link... button(v-if="!$route.path.match('/variants/')" @click="showRules") | {{ st.tr["Rules"] }} @@ -51,6 +51,7 @@ import { store } from "@/store"; import { getSquareId } from "@/utils/squareId"; import { getDate } from "@/utils/datetime"; import { processModalClick } from "@/utils/modalClick"; +import { getScoreMessage } from "@/utils/scoring"; export default { name: 'my-base-game', @@ -71,6 +72,7 @@ export default { cursor: -1, //index of the move just played lastMove: null, firstMoveNumber: 0, //for printing + incheck: [], //for Board }; }, watch: { @@ -220,9 +222,10 @@ export default { const L = this.moves.length; this.cursor = L-1; this.lastMove = (L > 0 ? this.moves[L-1] : null); + this.incheck = []; }, analyzePosition: function() { - const newUrl = "/analyze/" + this.game.vname + + const newUrl = "/analyse/" + this.game.vname + "/?fen=" + this.vr.getFen().replace(/ /g, "_"); if (this.game.type == "live") this.$router.push(newUrl); //open in same tab: against cheating... @@ -262,25 +265,6 @@ export default { } return pgn + "\n"; }, - getScoreMessage: function(score) { - let eogMessage = "Undefined"; //not translated: unused - switch (score) - { - case "1-0": - eogMessage = this.st.tr["White win"]; - break; - case "0-1": - eogMessage = this.st.tr["Black win"]; - break; - case "1/2": - eogMessage = this.st.tr["Draw"]; - break; - case "?": - eogMessage = this.st.tr["Unknown"]; - break; - } - return eogMessage; - }, showEndgameMsg: function(message) { this.endgameMessage = message; let modalBox = document.getElementById("modalEog"); @@ -289,12 +273,18 @@ export default { }, animateMove: function(move, callback) { let startSquare = document.getElementById(getSquareId(move.start)); + // TODO: error "flush nextTick callbacks" when observer reloads page: + // this late check is not a fix! + if (!startSquare) + return; let endSquare = document.getElementById(getSquareId(move.end)); let rectStart = startSquare.getBoundingClientRect(); let rectEnd = endSquare.getBoundingClientRect(); let translation = {x:rectEnd.x-rectStart.x, y:rectEnd.y-rectStart.y}; let movingPiece = document.querySelector("#" + getSquareId(move.start) + " > img.piece"); + if (!movingPiece) //TODO: shouldn't happen + return; // HACK for animation (with positive translate, image slides "under background") // Possible improvement: just alter squares on the piece's way... const squares = document.getElementsByClassName("board"); @@ -358,7 +348,7 @@ export default { const score = this.vr.getCurrentScore(); if (score != "*") { - const message = this.getScoreMessage(score); + const message = getScoreMessage(score); if (this.game.mode != "analyze") this.$emit("gameover", score, message); else //just show score on screen (allow undo)