X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FHall.vue;h=92030e74089650d9c1b697f40e38cdd6d1a40d4a;hb=e727fe31742dfb3e40eb222c94f4199e2be98453;hp=4cb46ec98311a91547014276d5176b5819596e14;hpb=c292ebb2a014646005b01e27253c162f1d639387;p=vchess.git diff --git a/client/src/views/Hall.vue b/client/src/views/Hall.vue index 4cb46ec9..92030e74 100644 --- a/client/src/views/Hall.vue +++ b/client/src/views/Hall.vue @@ -256,7 +256,15 @@ export default { response.games.map(g => { const type = this.classifyObject(g); const vname = this.getVname(g.vid); - return Object.assign({}, g, { type: type, vname: vname }); + return Object.assign( + {}, + g, + { + type: type, + vname: vname, + priority: g.score == "*" ? 1 : 0 //for display + } + ); }) ); } @@ -324,6 +332,8 @@ export default { params.socketUrl + "/?sid=" + this.st.user.sid + + "&id=" + + this.st.user.id + "&tmpId=" + getRandString() + "&page=" + @@ -685,16 +695,18 @@ export default { const game = data.data; // Ignore games where I play (will go in MyGames page) if (game.players.every(p => - p.sid != this.st.user.sid || p.id != this.st.user.id)) + p.sid != this.st.user.sid || p.uid != this.st.user.id)) { let locGame = this.games.find(g => g.id == game.id); if (!locGame) { let newGame = game; newGame.type = this.classifyObject(game); newGame.vname = this.getVname(game.vid); + newGame.priority = 0; if (!game.score) - //if new game from Hall + // New game from Hall newGame.score = "*"; + if (newGame.score == "*") newGame.priority++; newGame.rids = [game.rid]; delete newGame["rid"]; this.games.push(newGame); @@ -715,7 +727,10 @@ export default { } case "result": { let g = this.games.find(g => g.id == data.gid); - if (!!g) g.score = data.score; + if (!!g) { + g.score = data.score; + g.priority = 0; + } break; } case "startgame": { @@ -905,6 +920,7 @@ export default { } this.send("deletechallenge", { data: c.id }); }, + // TODO: if several players click same challenge at the same time: problem clickChallenge: async function(c) { const myChallenge = c.from.sid == this.st.user.sid || //live @@ -948,6 +964,16 @@ export default { }, // NOTE: when launching game, the challenge is already being deleted launchGame: function(c) { + let players = + !!c.mycolor + ? (c.mycolor == "w" ? [c.seat, c.from] : [c.from, c.seat]) + : shuffle([c.from, c.seat]); + // Convention for players IDs in stored games is 'uid' + players.forEach(p => { + let pWithUid = p; + pWithUid["uid"] = p.id; + delete pWithUid["id"]; + }); // These game informations will be shared let gameInfo = { id: getRandString(), @@ -967,6 +993,16 @@ export default { // Send game info (only if live) to everyone except me and opponent // TODO: this double message send could be avoided. this.send("newgame", { data: gameInfo, oppsid: oppsid }); + // Also to MyGames page: + this.send( + "notifynewgame", + { + data: gameInfo, + targets: gameInfo.players.map(p => { + return { sid: p.sid, uid: p.uid }; + }) + } + ); }; if (c.type == "live") { notifyNewgame();