"GET",
{uid: this.st.user.id, excluded: true},
response => {
- this.games = this.games.concat(response.games);
+ this.games = this.games.concat(response.games.map(g => {
+ const tc =
+ return Object.assign({}, g, {mainT
+ });
}
);
// Also ask for corr challenges (open + sent to me)
}
this.$router.push(url);
},
+ // TODO: ...filter(...)[0].name, one-line, just remove this function
getVname: function(vid) {
const vIdx = this.st.variants.findIndex(v => v.id == vid);
return this.st.variants[vIdx].name;
id: game.id,
players: game.players.map(p => p.name),
vname: game.vname,
-
-
-
-
-// TODO: timeControl only in challenge - no need in game (info in mainTime + increment)
-
-
-
-
timeControl: game.timeControl,
};
this.st.conn.send(JSON.stringify({code:"game",
const pIdx = this.people.findIndex(p => p.sid == data.from);
newChall.from = this.people[pIdx]; //may be anonymous
newChall.added = Date.now(); //TODO: this is reception timestamp, not creation
- newChall.vname = this.getVname(newChall.vid); //TODO: just send vname?
+ newChall.vname = this.getVname(newChall.vid);
this.challenges.push(newChall);
break;
}
tryChallenge: function(player) {
if (player.id == 0)
return; //anonymous players cannot be challenged
- this.newchallenge.to[0] = player.name;
+ this.newchallenge.to = player.name;
doClick("modalNewgame");
},
newChallenge: async function() {
return alert(error);
const ctype = this.classifyObject(this.newchallenge);
// NOTE: "from" information is not required here
- let chall =
- {
- fen: this.newchallenge.fen,
- to: this.newchallenge.to,
- timeControl: this.newchallenge.timeControl,
- vid: this.newchallenge.vid,
- };
+ let chall = Object.assign({}, this.newchallenge);
const finishAddChallenge = (cid,warnDisconnected) => {
chall.id = cid || "c" + getRandString();
// Send challenge to peers (if connected)
chall.added = Date.now();
chall.type = ctype;
chall.vname = vname;
+
+
+
+
+// TODO: vname and type are redundant (can be deduced from timeControl + vid)
+
+
+
+
chall.from = this.st.user;
this.challenges.push(chall);
localStorage.setItem("challenge", JSON.stringify(chall));
fen: c.fen || V.GenRandInitFen(),
players: shuffle([c.from, c.seat]), //white then black
vid: c.vid,
- timeControl: c.timeControl,
- type: c.type,
+ timeControl: tc.timeControl,
};
this.st.conn.send(JSON.stringify({code:"newgame",
gameInfo:gameInfo, target:c.seat.sid}));
// NOTE: for live games only (corr games are launched on server)
startNewGame: function(gameInfo) {
// Extract times (in [milli]seconds), set clocks
- const tc = extractTime(gameInfo.timeControl);
- let initime = [...Array(gameInfo.players.length)];
- initime[0] = Date.now();
- const game =
- {
- // Game infos: constant
- gameId: gameInfo.gameId,
- vname: this.getVname(gameInfo.vid),
+ const tc = extractTime(c.timeControl);
+ const game = Object.assign({}, gameInfo, {
+ // (other) Game infos: constant
fenStart: gameInfo.fen,
- players: gameInfo.players,
- mainTime: tc.mainTime,
- increment: tc.increment,
- mode: "live", //function for live games only
- // Game state: will be updated
- fen: gameInfo.fen,
+ // Game state (including FEN): will be updated
moves: [],
- clocks: [...Array(gameInfo.players.length)].fill(tc.mainTime),
- initime: initime,
+ clocks: [tc.mainTime, tc.mainTime],
+ initime: [Date.now(), 0],
score: "*",
- };
+ });
GameStorage.add(game);
if (this.st.settings.sound >= 1)
new Audio("/sounds/newgame.mp3").play().catch(err => {});