X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FGame.vue;h=1071ece83f0f9fce229bcddd8801fb5ece0e5573;hp=b13e383225030808f5e2bdfa0082778c1133e77c;hb=bae751bc6bc548791772c3ff5883a03deeb77264;hpb=eb2d61de8d569470fa329a484efe9bab420b2b82 diff --git a/client/src/views/Game.vue b/client/src/views/Game.vue index b13e3832..1071ece8 100644 --- a/client/src/views/Game.vue +++ b/client/src/views/Game.vue @@ -80,8 +80,7 @@ main span.variant-cadence(v-if="game.type!='import'") {{ game.cadence }} span.variant-name | {{ game.vname }} - | - - | {{ vr.constructor.AbbreviateOptions(game.options) }} + | {{ !!vr ? vr.constructor.AbbreviateOptions(game.options) : '' }} span#nextGame( v-if="nextIds.length > 0" @click="showNextGame()" @@ -334,6 +333,29 @@ export default { ) ); }, + requestLastate: function(sid) { + // TODO: maybe also find opponent SID ? + //const oppSid = + // this.game.players.find(p => p.sid != this.st.user.sid).sid; + this.send("asklastate", { target: sid }); + let counter = 1; + this.askLastate = setInterval( + () => { + // Ask at most 3 times: + // if no reply after that there should be a network issue. + if ( + counter < 3 && + !this.gotLastate && + !!this.people[sid] + ) { + this.send("asklastate", { target: sid }); + counter++; + } + else clearInterval(this.askLastate); + }, + 1500 + ); + }, atCreation: function() { document.addEventListener('visibilitychange', this.visibilityChange); window.addEventListener('focus', this.onFocus); @@ -352,7 +374,7 @@ export default { id: my.id, name: my.name, tmpIds: { - tmpId: { focus: true } + [tmpId]: { focus: true } } } ); @@ -396,6 +418,8 @@ export default { "message", this.socketMessageListener); this.conn = new WebSocket(this.connexionString); this.conn.addEventListener("message", this.socketMessageListener); + const oppSid = this.getOppsid(); + if (!!oppSid) this.requestLastate(oppSid); //in case of } }, 1000 @@ -673,24 +697,7 @@ export default { this.game.type == "live" && this.game.players.some(p => p.sid == user.sid) ) { - this.send("asklastate", { target: user.sid }); - let counter = 1; - this.askLastate = setInterval( - () => { - // Ask at most 3 times: - // if no reply after that there should be a network issue. - if ( - counter < 3 && - !this.gotLastate && - !!this.people[user.sid] - ) { - this.send("asklastate", { target: user.sid }); - counter++; - } - else clearInterval(this.askLastate); - }, - 1500 - ); + this.requestLastate(user.sid); } break; } @@ -1059,7 +1066,7 @@ export default { let gameInfo = { id: getRandString(), //ignored if corr fen: V.GenRandInitFen(this.game.options), - options: this.game.options, + options: JSON.stringify(this.game.options), players: [this.game.players[1], this.game.players[0]], vid: this.game.vid, cadence: this.game.cadence @@ -1092,11 +1099,7 @@ export default { "/games", "POST", { - data: Object.assign( - {}, - gameInfo, - { options: JSON.stringify(this.game.options) } - ), + data: { gameInfo: gameInfo }, success: (response) => { gameInfo.id = response.id; notifyNewGame(); @@ -1313,7 +1316,9 @@ export default { const trySetVname = setInterval( () => { // this.st.variants might be uninitialized (variant == null) - variant = this.st.variants.find(v => v.id == game.vid); + variant = this.st.variants.find(v => { + return v.id == game.vid || v.name == game.vname + }); if (!!variant) { clearInterval(trySetVname); game.vname = variant.name; @@ -1613,7 +1618,9 @@ export default { if (["all","byrow"].includes(V.ShowMoves)) { this.curDiag = getDiagram({ position: position, - orientation: V.CanFlip ? this.game.mycolor : "w" + orientation: V.CanFlip ? this.game.mycolor : "w", + color: this.game.mycolor, + score: "*" }); document.querySelector("#confirmDiv > .card").style.width = boardDiv.offsetWidth + "px";