+ },
+ re_setVariables: function() {
+ this.endgameMessage = "";
+ this.orientation = this.game.mycolor || "w"; //default orientation for observed games
+ this.score = this.game.score || "*"; //mutable (if initially "*")
+ this.gameHasEnded = (this.score != "*");
+ 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();
+ });
+ if (this.game.fenStart.indexOf(" b ") >= 0 ||
+ (this.moves.length > 0 && this.moves[0].color == "b"))
+ {
+ // 'end' is required for Board component to check lastMove for e.p.
+ this.moves.unshift({color: "w", notation: "...", end: {x:-1,y:-1}});
+ }
+ const L = this.moves.length;
+ this.cursor = L-1;
+ this.lastMove = (L > 0 ? this.moves[L-1] : null);
+ },
+ gotoFenContent: function(event) {
+ this.$router.push("/analyze/" + this.game.vname +
+ "/?fen=" + event.target.innerText.replace(/ /g, "_"));