X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fcomponents%2FBaseGame.vue;h=c52f94c8a1193c70c494f3cf1e19f520657165db;hb=8477e53d8e78606e4c4e4bf91c77b1011aab583c;hp=f4603d6bdec95ad389ad800b8915ccfb9a26b29b;hpb=910d631b73cad5ffef1b4461157b704e7e7057d8;p=vchess.git diff --git a/client/src/components/BaseGame.vue b/client/src/components/BaseGame.vue index f4603d6b..c52f94c8 100644 --- a/client/src/components/BaseGame.vue +++ b/client/src/components/BaseGame.vue @@ -33,15 +33,15 @@ div#baseGame( Board( :vr="vr" :last-move="lastMove" - :analyze="analyze" + :analyze="game.mode=='analyze'" + :score="game.score" :user-color="game.mycolor" :orientation="orientation" :vname="game.vname" :incheck="incheck" @play-move="play" ) - #turnIndicator(v-if="game.vname=='Dark' && game.score=='*'") - | {{ st.tr[vr.turn + " to move"] }} + #turnIndicator(v-if="showTurn") {{ turn }} #controls button(@click="gotoBegin()") << button(@click="undo()") < @@ -49,16 +49,16 @@ div#baseGame( button(@click="play()") > button(@click="gotoEnd()") >> #belowControls - #downloadDiv(v-if="game.vname!='Dark' || game.score!='*'") + #downloadDiv(v-if="allowDownloadPGN") a#download(href="#") button(@click="download()") {{ st.tr["Download"] }} PGN button(onClick="window.doClick('modalAdjust')") ⤢ button( - v-if="game.vname!='Dark' && game.mode!='analyze'" + v-if="canAnalyze" @click="analyzePosition()" ) | {{ st.tr["Analyse"] }} - // NOTE: rather ugly hack to avoid showing twice "rules" link... + // NOTE: variants pages already have a "Rules" link on top button( v-if="!$route.path.match('/variants/')" @click="showRules()" @@ -112,25 +112,22 @@ export default { "game.fenStart": function() { this.re_setVariables(); }, - // Received a new move to play: - "game.moveToPlay": function(move) { - if (move) this.play(move, "receive"); - }, - // ...Or to undo (corr game, move not validated) - "game.moveToUndo": function(move) { - if (move) this.undo(move); - } }, computed: { showMoves: function() { - return this.game.vname != "Dark" || this.game.score != "*"; + return this.game.score != "*" || (window.V && V.ShowMoves == "all"); }, - analyze: function() { - return ( - this.game.mode == "analyze" || - // From Board viewpoint, a finished Dark game == analyze (TODO: unclear) - (this.game.vname == "Dark" && this.game.score != "*") - ); + showTurn: function() { + return this.game.score == '*' && window.V && V.ShowMoves != "all"; + }, + turn: function() { + return this.st.tr[(this.vr.turn == 'w' ? "White" : "Black") + " to move"]; + }, + canAnalyze: function() { + return this.game.mode != "analyze" && window.V && V.CanAnalyze; + }, + allowDownloadPGN: function() { + return this.game.score != "*" || (window.V && V.ShowMoves == "all"); } }, created: function() { @@ -220,26 +217,21 @@ export default { }, re_setVariables: function() { this.endgameMessage = ""; - this.orientation = this.game.mycolor || "w"; //default orientation for observed games + // "w": default orientation for observed games + this.orientation = this.game.mycolor || "w"; this.moves = JSON.parse(JSON.stringify(this.game.moves || [])); - // Post-processing: decorate each move with color + current FEN: - // (to be able to jump to any position quickly) - let vr_tmp = new V(this.game.fenStart); //vr is already at end of game - this.firstMoveNumber = Math.floor( - V.ParseFen(this.game.fenStart).movesCount / 2 - ); + // Post-processing: decorate each move with color, notation and FEN + let vr_tmp = new V(this.game.fenStart); + const parsedFen = V.ParseFen(this.game.fenStart); + const firstMoveColor = parsedFen.turn; + this.firstMoveNumber = Math.floor(parsedFen.movesCount / 2); this.moves.forEach(move => { - // NOTE: this is doing manually what play() function below achieve, - // but in a lighter "fast-forward" way move.color = vr_tmp.turn; move.notation = vr_tmp.getNotation(move); vr_tmp.play(move); move.fen = vr_tmp.getFen(); }); - if ( - (this.moves.length > 0 && this.moves[0].color == "b") || - (this.moves.length == 0 && vr_tmp.turn == "b") - ) { + if (firstMoveColor == "b") { // 'end' is required for Board component to check lastMove for e.p. this.moves.unshift({ color: "w", @@ -379,7 +371,7 @@ export default { if (!navigate && this.game.mode != "analyze") this.$emit("newmove", move); //post-processing (e.g. computer play) }; - if (!!receive && this.game.vname != "Dark") + if (!!receive && V.ShowMoves == "all") this.animateMove(move, doPlayMove); else doPlayMove(); }, @@ -452,6 +444,7 @@ export default { #turnIndicator text-align: center + font-weight: bold #belowControls border-top: 1px solid #2f4f4f