From 13aa5a44fe3da4eac5ab04f0120ccbd5927f91c1 Mon Sep 17 00:00:00 2001 From: Benjamin Auder <benjamin.auder@somewhere> Date: Fri, 17 May 2019 19:29:24 +0200 Subject: [PATCH] Simplify game variables passed to BaseGame component --- client/src/components/BaseGame.vue | 10 ++++++---- client/src/components/Board.vue | 5 +---- client/src/components/ComputerGame.vue | 26 +++++++++++++------------- client/src/views/Rules.vue | 2 +- 4 files changed, 21 insertions(+), 22 deletions(-) diff --git a/client/src/components/BaseGame.vue b/client/src/components/BaseGame.vue index aa19b477..1e7a83bb 100644 --- a/client/src/components/BaseGame.vue +++ b/client/src/components/BaseGame.vue @@ -38,13 +38,15 @@ export default { //MoveList, }, // "vr": VariantRules object, describing the game state + rules - props: ["vname","analyze","vr","fenStart","players","mycolor"], + // fenStart, players, mycolor + props: ["vname","analyze","vr","gameInfo"], data: function() { return { st: store.state, // NOTE: all following variables must be reset at the beginning of a game endgameMessage: "", orientation: "w", + // TODO: score and moves could be also in gameInfo (when resuming) score: "*", //'*' means 'unfinished' moves: [], cursor: -1, //index of the move just played @@ -56,7 +58,7 @@ export default { fenStart: function() { // Reset all variables this.endgameMessage = ""; - this.orientation = this.mycolor; + this.orientation = this.gameInfo.mycolor || "w"; this.score = "*"; this.moves = []; this.cursor = -1; @@ -112,8 +114,8 @@ export default { pgn += '[Site "vchess.club"]\n'; pgn += '[Variant "' + this.vname + '"]\n'; pgn += '[Date "' + getDate(new Date()) + '"]\n'; - pgn += '[White "' + this.players[0] + '"]\n'; - pgn += '[Black "' + this.players[1] + '"]\n'; + pgn += '[White "' + this.game.players[0] + '"]\n'; + pgn += '[Black "' + this.game.players[1] + '"]\n'; pgn += '[Fen "' + this.fenStart + '"]\n'; pgn += '[Result "' + this.score + '"]\n\n'; let counter = 1; diff --git a/client/src/components/Board.vue b/client/src/components/Board.vue index 8b1055bd..ff50b121 100644 --- a/client/src/components/Board.vue +++ b/client/src/components/Board.vue @@ -1,8 +1,5 @@ <script> -// This can work for squared boards (2 or 4 players), with some adaptations (TODO) -// TODO: for 3 players, write a "board3.js" - -// TODO: current clicked square + moving square as parameters, + highlight +// TODO: for 3 or 4 players, write a "board3.js" (board4.js) import { getSquareId, getSquareFromId } from "@/utils/squareId"; import { ArrayFun } from "@/utils/array"; diff --git a/client/src/components/ComputerGame.vue b/client/src/components/ComputerGame.vue index 8c0ac382..238f1092 100644 --- a/client/src/components/ComputerGame.vue +++ b/client/src/components/ComputerGame.vue @@ -1,9 +1,8 @@ <template lang="pug"> .row .col-sm-12.col-md-10.col-md-offset-1.col-lg-8.col-lg-offset-2 - BaseGame(:vname="vname" :analyze="analyze" - :vr="vr" :fen-start="fenStart" :players="players" :mycolor="mycolor" - ref="basegame" @newmove="processMove") + BaseGame(:vname="vname" :analyze="analyze" :vr="vr" + :game-info="gameInfo" ref="basegame" @newmove="processMove") </template> <script> @@ -22,10 +21,12 @@ export default { return { st: store.state, // variables passed to BaseGame: - fenStart: "", + gameInfo: { + fenStart: "", + players: ["Myself","Computer"], //playing as white + mycolor: "w", + }, vr: null, - players: ["Myself","Computer"], //always playing white for now - mycolor: "w", // Web worker to play computer moves without freezing interface: timeStart: undefined, //time when computer starts thinking lockCompThink: false, //to avoid some ghost moves @@ -80,14 +81,13 @@ export default { }, newGameFromFen: function(fen) { this.vr = new V(fen); - this.fenStart = fen; - this.mycolor = (Math.random() < 0.5 ? "w" : "b"); - console.log(this.mycolor); - this.players = ["Myself","Computer"]; - if (this.mycolor == "b") - this.players = this.players.reverse(); + this.gameInfo.fenStart = fen; + this.gameInfo.mycolor = (Math.random() < 0.5 ? "w" : "b"); + this.gameInfo.players = ["Myself","Computer"]; + if (this.gameInfo.mycolor == "b") + this.gameInfo.players = this.gameInfo.players.reverse(); this.compWorker.postMessage(["init",fen]); - if (this.mycolor != "w" || this.mode == "auto") + if (this.gameInfo.mycolor != "w" || this.mode == "auto") this.playComputerMove(); }, playComputerMove: function() { diff --git a/client/src/views/Rules.vue b/client/src/views/Rules.vue index 322baba6..738e25fa 100644 --- a/client/src/views/Rules.vue +++ b/client/src/views/Rules.vue @@ -19,6 +19,7 @@ import ComputerGame from "@/components/ComputerGame.vue"; import { store } from "@/store"; import { getDiagram } from "@/utils/printDiagram"; + export default { name: 'my-rules', components: { @@ -32,7 +33,6 @@ export default { display: "rules", mode: "versus", gameInProgress: false, - mycolor: "w", fen: "", }; }, -- 2.44.0