X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FGame.vue;h=d88ac1e2aa8dfc2d0d0b916e20337774ca90d2aa;hb=83cecc0fec143a6eac6f6632048d99398bd4c0da;hp=171dc6c68674c42ba3e40a2b0d897bfb77b7ce45;hpb=80b38d463c0d5dacac93bc2aeb666bbb19781e1e;p=vchess.git diff --git a/client/src/views/Game.vue b/client/src/views/Game.vue index 171dc6c6..d88ac1e2 100644 --- a/client/src/views/Game.vue +++ b/client/src/views/Game.vue @@ -46,7 +46,7 @@ main span {{ st.tr["Participant(s):"] }} span( v-for="p in Object.values(people)" - v-if="participateInChat(p)" + v-if="!!p.name" ) | {{ p.name }} span.anonymous(v-if="someAnonymousPresent()") + @nonymous @@ -196,6 +196,7 @@ import { getDiagram, replaceByDiag } from "@/utils/printDiagram"; import { processModalClick } from "@/utils/modalClick"; import { playMove, getFilteredMove } from "@/utils/playUndo"; import { ArrayFun } from "@/utils/array"; +import afterRawLoad from "@/utils/afterRawLoad"; import params from "@/parameters"; export default { name: "my-game", @@ -213,6 +214,7 @@ export default { game: {}, //passed to BaseGame focus: !document.hidden, //will not always work... TODO // virtualClocks will be initialized from true game.clocks + // TODO: clock update triggers re-rendering. Should be out of Vue virtualClocks: [], vr: null, //"variant rules" object initialized from FEN rulesContent: "", @@ -256,7 +258,8 @@ export default { // In case of incomplete information variant: boardDiv.style.visibility = "hidden"; this.atCreation(); - } else + } + else // Same game ID this.nextIds = JSON.parse(this.$route.query["next"] || "[]"); } @@ -321,9 +324,6 @@ export default { ) ); }, - participateInChat: function(p) { - return Object.keys(p.tmpIds).some(x => p.tmpIds[x].focus) && !!p.name; - }, someAnonymousPresent: function() { return ( Object.values(this.people).some(p => @@ -523,7 +523,7 @@ export default { }, getGameType: function(game) { if (!!game.id.toString().match(/^i/)) return "import"; - return game.cadence.indexOf("d") >= 0 ? "corr" : "live"; + return (game.cadence.indexOf("d") >= 0 ? "corr" : "live"); }, // Notify something after a new move (to opponent and me on MyGames page) notifyMyGames: function(thing, data) { @@ -752,9 +752,9 @@ export default { case "newmove": { // DEBUG: -console.log("Receive move"); -console.log(data.data); -//moveslist not updated when receiving a move? (see in baseGame) +//console.log("Receive move"); +//console.log(data.data); +//moveslist not updated when receiving a move? (see in BaseGame) const movePlus = data.data; const movesCount = this.game.moves.length; @@ -1044,6 +1044,7 @@ console.log(data.data); let gameInfo = { id: getRandString(), //ignored if corr fen: V.GenRandInitFen(this.game.randomness), + randomness: this.game.randomness, players: [this.game.players[1], this.game.players[0]], vid: this.game.vid, cadence: this.game.cadence @@ -1065,7 +1066,6 @@ console.log(data.data); "/games", "POST", { - // cid is useful to delete the challenge: data: { gameInfo: gameInfo }, success: (response) => { gameInfo.id = response.gameId; @@ -1267,26 +1267,23 @@ console.log(data.data); window.V = vModule[game.vname + "Rules"]; this.loadGame(game, callback); }); - // (AJAX) Request to get rules content (plain text, HTML) this.rulesContent = - require( - "raw-loader!@/translations/rules/" + - game.vname + "/" + - this.st.lang + ".pug" - ) - // Next two lines fix a weird issue after last update (2019-11) - .replace(/\\n/g, " ") - .replace(/\\"/g, '"') - .replace('module.exports = "', "") - .replace(/"$/, "") - .replace(/(fen:)([^:]*):/g, replaceByDiag); + afterRawLoad( + require( + "raw-loader!@/translations/rules/" + + game.vname + "/" + this.st.lang + ".pug" + ).default + ).replace(/(fen:)([^:]*):/g, replaceByDiag); }, // 3 cases for loading a game: // - from indexedDB (running or completed live game I play) // - from server (one correspondance game I play[ed] or not) // - from remote peer (one live game I don't play, finished or not) fetchGame: function(callback) { - if (Number.isInteger(this.gameRef) || !isNaN(parseInt(this.gameRef))) { + if ( + Number.isInteger(this.gameRef) || + !isNaN(parseInt(this.gameRef, 10)) + ) { // corr games identifiers are integers ajax( "/games", @@ -1394,7 +1391,11 @@ console.log(data.data); !!this.repeat[fenObj] ? this.repeat[fenObj] + 1 : 1; - if (this.repeat[fenObj] >= 3) this.drawOffer = "threerep"; + if (this.repeat[fenObj] >= 3) { + if (V.LoseOnRepetition) + this.gameOver(moveCol == "w" ? "0-1" : "1-0", "Repetition"); + else this.drawOffer = "threerep"; + } else if (this.drawOffer == "threerep") this.drawOffer = ""; if (!!this.game.mycolor && !data.receiveMyMove) { // NOTE: 'var' to see that variable outside this block @@ -1518,7 +1519,6 @@ console.log(data.data); }; if ( this.game.type == "corr" && - V.CorrConfirm && moveCol == this.game.mycolor && !data.receiveMyMove ) { @@ -1534,6 +1534,10 @@ console.log(data.data); if (data.score == "*") this.re_setClocks(); } }; + if (!V.CorrConfirm) { + afterSetScore(); + return; + } let el = document.querySelector("#buttonsConfirm > .acceptBtn"); // We may play several moves in a row: in case of, remove listener: let elClone = el.cloneNode(true);