// TODO: this fails. See https://github.com/websockets/ws/issues/489
//this.conn.removeEventListener("message", this.socketMessageListener);
//this.conn.removeEventListener("close", this.socketCloseListener);
//this.conn.close();
this.conn = null;
// TODO: this fails. See https://github.com/websockets/ws/issues/489
//this.conn.removeEventListener("message", this.socketMessageListener);
//this.conn.removeEventListener("close", this.socketCloseListener);
//this.conn.close();
this.conn = null;
game.moves.sort((m1, m2) => m1.idx - m2.idx); //in case of
const L = game.moves.length;
if (game.score == "*") {
// Set clocks + initime
game.moves.sort((m1, m2) => m1.idx - m2.idx); //in case of
const L = game.moves.length;
if (game.score == "*") {
// Set clocks + initime
- if (L >= 3) {
- let addTime = [0, 0];
- for (let i = 2; i < L; i++) {
- addTime[i % 2] +=
- tc.increment -
- (game.moves[i].played - game.moves[i - 1].played) / 1000;
- }
- for (let i = 0; i <= 1; i++) game.clocks[i] += addTime[i];
+ if (L >= 1) {
+ const gameLastupdate = game.moves[L-1].played;
+ game.initime[L % 2] = gameLastupdate;
+ if (L >= 2)
+ game.clocks[L % 2] = Date.now() - gameLastupdate;
}
// Sort chat messages from newest to oldest
game.chats.sort((c1, c2) => {
}
// Sort chat messages from newest to oldest
game.chats.sort((c1, c2) => {
var filtered_move = getFilteredMove(move);
}
// Send move ("newmove" event) to people in the room (if our turn)
var filtered_move = getFilteredMove(move);
}
// Send move ("newmove" event) to people in the room (if our turn)
const elapsed = Date.now() - this.game.initime[colorIdx];
// elapsed time is measured in milliseconds
addTime = this.game.increment - elapsed / 1000;
}
const sendMove = {
move: filtered_move,
const elapsed = Date.now() - this.game.initime[colorIdx];
// elapsed time is measured in milliseconds
addTime = this.game.increment - elapsed / 1000;
}
const sendMove = {
move: filtered_move,
cancelDrawOffer: this.drawOffer == "",
// Players' SID required for /mygames page
// TODO: precompute and add this field to game object?
cancelDrawOffer: this.drawOffer == "",
// Players' SID required for /mygames page
// TODO: precompute and add this field to game object?
- this.game.clocks[colorIdx] += addTime;
+ if (this.game.type == "live") this.game.clocks[colorIdx] += addTime;
+ // In corr games, just reset clock to mainTime:
+ else this.game.clocks[colorIdx] = extractTime(this.game.cadence).mainTime;
// data.initime is set only when I receive a "lastate" move from opponent
this.game.initime[nextIdx] = (data && data.initime) ? data.initime : Date.now();
this.re_setClocks();
// data.initime is set only when I receive a "lastate" move from opponent
this.game.initime[nextIdx] = (data && data.initime) ? data.initime : Date.now();
this.re_setClocks();