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
+ }
+ );
})
);
}
params.socketUrl +
"/?sid=" +
this.st.user.sid +
+ "&id=" +
+ this.st.user.id +
"&tmpId=" +
getRandString() +
"&page=" +
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);
}
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": {
}
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
},
// 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(),
// 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();