X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fcomponents%2FBaseGame.vue;h=9f4b6df803db3d687ddea57f826de7d50c3b923f;hb=27d18a24ff2f3b04a7bf26b9b95c7214f8e5076a;hp=442579d0f92c2a986c56717230ee0f27dac55b84;hpb=b988c726df078aa456bd47709f6eee0f73dc5abd;p=vchess.git diff --git a/client/src/components/BaseGame.vue b/client/src/components/BaseGame.vue index 442579d0..9f4b6df8 100644 --- a/client/src/components/BaseGame.vue +++ b/client/src/components/BaseGame.vue @@ -7,7 +7,7 @@ label.modal-close(for="modalEog") h3#eogMessage.section {{ endgameMessage }} // TODO: or "BoardHex" if this.game.vname in "Hexagonal..." - Board(:vr="vr" :last-move="lastMove" :analyze="game.mode=='analyze'" + Board(:vr="vr" :last-move="lastMove" :analyze="analyze" :user-color="game.mycolor" :orientation="orientation" :vname="game.vname" @play-move="play") .button-group @@ -22,7 +22,8 @@ a#download(href="#") .button-group button#downloadBtn(@click="download") {{ st.tr["Download PGN"] }} - button Import game + // TODO: Import game button copy game locally in IndexedDB + //button Import game //MoveList(v-if="showMoves" :moves="moves" :cursor="cursor" @goto-move="gotoMove") @@ -32,6 +33,7 @@ import Board from "@/components/Board.vue"; //import MoveList from "@/components/MoveList.vue"; import { store } from "@/store"; import { getSquareId } from "@/utils/squareId"; +import { getDate } from "@/utils/datetime"; export default { name: 'my-base-game', @@ -68,7 +70,7 @@ export default { return this.game.vname != "Dark" || this.score != "*"; }, analyze: function() { - return this.game.mode == "analyze"; + return this.game.mode == "analyze" || this.game.score != "*"; }, }, created: function() { @@ -81,6 +83,17 @@ export default { this.orientation = this.game.mycolor || "w"; //default orientation for observed games this.score = this.game.score || "*"; //mutable (if initially "*") 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.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(); + }); const L = this.moves.length; this.cursor = L-1; this.lastMove = (L > 0 ? this.moves[L-1] : null); @@ -98,8 +111,8 @@ export default { pgn += '[Site "vchess.club"]\n'; pgn += '[Variant "' + this.game.vname + '"]\n'; pgn += '[Date "' + getDate(new Date()) + '"]\n'; - pgn += '[White "' + this.game.players[0] + '"]\n'; - pgn += '[Black "' + this.game.players[1] + '"]\n'; + pgn += '[White "' + this.game.players[0].name + '"]\n'; + pgn += '[Black "' + this.game.players[1].name + '"]\n'; pgn += '[Fen "' + this.game.fenStart + '"]\n'; pgn += '[Result "' + this.score + '"]\n\n'; let counter = 1; @@ -111,9 +124,9 @@ export default { { let move = ""; while (i < this.moves.length && this.moves[i].color == color) - move += this.moves[i++].notation[0] + ","; + move += this.moves[i++].notation + ","; move = move.slice(0,-1); //remove last comma - pgn += move + (i < this.moves.length-1 ? " " : ""); + pgn += move + (i < this.moves.length ? " " : ""); } } return pgn + "\n";