X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FMyGames.vue;h=bcf7d18271ad08756e708ea901b5c581a3e13d5c;hp=5d19e7d70980a7694fe01286dcb29ad7c86807be;hb=620a88ede2ad25e66d9cbb521388ee53e4a564c0;hpb=1aaae6ce703d43ccf4328da9b6b4dca4ed67289a diff --git a/client/src/views/MyGames.vue b/client/src/views/MyGames.vue index 5d19e7d7..bcf7d182 100644 --- a/client/src/views/MyGames.vue +++ b/client/src/views/MyGames.vue @@ -43,10 +43,6 @@ export default { }, created: function() { GameStorage.getAll(true, localGames => { - - -console.log(localGames); - localGames.forEach(g => (g.type = this.classifyObject(g))); this.liveGames = localGames; }); @@ -91,13 +87,40 @@ console.log(localGames); classifyObject: function(o) { return o.cadence.indexOf("d") === -1 ? "live" : "corr"; }, - showGame: function(g) { - this.$router.push("/game/" + g.id); + showGame: function(game) { + // TODO: "isMyTurn" is duplicated (see GameList component). myColor also + const isMyTurn = (g) => { + if (g.score != "*") return false; + const myColor = + g.players[0].uid == this.st.user.id || + g.players[0].sid == this.st.user.sid + ? "w" + : "b"; + const rem = g.movesCount % 2; + return ( + (rem == 0 && myColor == "w") || + (rem == 1 && myColor == "b") + ); + }; + if (game.type == "live" || !isMyTurn(game)) { + this.$router.push("/game/" + game.id); + return; + } + // It's my turn in this game. Are there others? + let nextIds = ""; + let otherCorrGamesMyTurn = this.corrGames.filter( + g => g.id != game.id && isMyTurn(g)); + if (otherCorrGamesMyTurn.length > 0) { + nextIds += "/?next=["; + otherCorrGamesMyTurn.forEach(g => { nextIds += g.id + ","; }); + // Remove last comma and close array: + nextIds = nextIds.slice(0, -1) + "]"; + } + this.$router.push("/game/" + game.id + nextIds); }, socketMessageListener: function(msg) { const data = JSON.parse(msg.data); - // Only event is newmove, and received only: - if (data.code == "newmove") { + if (data.code == "changeturn") { let games = !!parseInt(data.gid) ? this.corrGames : this.liveGames;