From 81bc1102368a5a8b9358f58b77c241f82f3c2c4b Mon Sep 17 00:00:00 2001 From: Benjamin Auder Date: Sun, 13 Jan 2019 15:16:52 +0100 Subject: [PATCH] Saving current state --- public/javascripts/components/board.js | 4 +++- public/javascripts/components/game.js | 13 +++++++++++-- public/javascripts/variant.js | 12 +++++++++--- views/layout.pug | 2 +- views/variant.pug | 3 +-- 5 files changed, 25 insertions(+), 9 deletions(-) diff --git a/public/javascripts/components/board.js b/public/javascripts/components/board.js index 44c499c2..0399410f 100644 --- a/public/javascripts/components/board.js +++ b/public/javascripts/components/board.js @@ -1,7 +1,9 @@ Vue.component('my-board', { // Last move cannot be guessed from here, and is required to highlight squares // vr: object to check moves, print board... - props: ["vr","lastMove","mode","orientation","userColor","gameOver"], + // mode: HH, HC or analyze + // userColor: for mode HH or HC + props: ["vr","lastMove","mode","orientation","userColor"], data: function () { return { hints: (!localStorage["hints"] ? true : localStorage["hints"] === "1"), diff --git a/public/javascripts/components/game.js b/public/javascripts/components/game.js index ca791257..555d3924 100644 --- a/public/javascripts/components/game.js +++ b/public/javascripts/components/game.js @@ -4,6 +4,7 @@ // Game logic on a variant page: 3 modes, analyze, computer or human Vue.component('my-game', { // gameId: to find the game in storage (assumption: it exists) + // fen: to start from a FEN without identifiers (analyze mode) props: ["gameId","fen","mode","allowChat","allowMovelist"], data: function() { return { @@ -22,6 +23,13 @@ Vue.component('my-game', { compWorker: new Worker('/javascripts/playCompMove.js'), timeStart: undefined, //time when computer starts thinking vr: null, //VariantRules object, describing the game state + rules + + // orientation :: button flip + // userColor: given by gameId, or fen (if no game Id) + // gameOver: known if gameId; otherwise assue false + // lastMove: update after every play, initialize with last move from list (if continuation) + //orientation ? userColor ? gameOver ? lastMove ? + }; }, watch: { @@ -82,7 +90,9 @@ Vue.component('my-game', { `, created: function() { const url = socketUrl; - this.conn = new WebSocket(url + "/?sid=" + this.myid + "&page=" + variant._id); + +// TODO: connexion initialized in variant.js and passed as a prop + // TODO: after game, archive in indexedDB // TODO: this events listener is central. Refactor ? How ? const socketMessageListener = msg => { @@ -157,7 +167,6 @@ Vue.component('my-game', { }; const socketCloseListener = () => { - this.conn = new WebSocket(url + "/?sid=" + this.myid + "&page=" + variant._id); this.conn.addEventListener('message', socketMessageListener); this.conn.addEventListener('close', socketCloseListener); }; diff --git a/public/javascripts/variant.js b/public/javascripts/variant.js index 453656ca..7d30d731 100644 --- a/public/javascripts/variant.js +++ b/public/javascripts/variant.js @@ -3,13 +3,13 @@ new Vue({ data: { display: "undefined", //default to main hall; see "created()" function gameid: "undefined", //...yet - + + conn: null, + // TEMPORARY: DEBUG - vr: null, mode: "analyze", orientation: "w", userColor: "w", - gameOver: false, }, created: function() { // TODO: navigation becomes a little more complex @@ -18,6 +18,12 @@ new Vue({ const page = (hashPos >= 0 ? url.substr(hashPos+1) : "room"); this.setDisplay(page); + this.conn = new WebSocket(url + "/?sid=" + this.myid + "&page=" + variant._id); + const socketCloseListener = () => { + this.conn = new WebSocket(url + "/?sid=" + this.myid + "&page=" + variant._id); + } + this.conn.onclose = socketCloseListener; + this.vr = new VariantRules( V.GenRandInitFen() ); }, methods: { diff --git a/views/layout.pug b/views/layout.pug index e5883eef..cfaf85ad 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -41,7 +41,7 @@ html div a(href="https://github.com/yagu0/vchess") Source code p.clickable(onClick="document.getElementById('modalContact').checked=true") - =translations["Contact"] + =translations["Contact form"] script(src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js") script(src="/javascripts/utils/misc.js") diff --git a/views/variant.pug b/views/variant.pug index 16dd447a..490a13ae 100644 --- a/views/variant.pug +++ b/views/variant.pug @@ -32,8 +32,7 @@ block content //my-problems(v-show="display=='problems'") //my-game(v-show="display=='game'" :gameId="gameid") my-board(:vr="vr" :mode="mode" :orientation="orientation" - :user-color="userColor" :game-over="gameOver" - v-on:play-move="play") + :user-color="userColor" v-on:play-move="play") block javascripts script(src="/javascripts/utils/array.js") -- 2.44.0