let challenges = {}; //variantName --> socketId, name
let games = {}; //gameId --> gameInfo (vname, fen, players, options, time)
let challenges = {}; //variantName --> socketId, name
let games = {}; //gameId --> gameInfo (vname, fen, players, options, time)
let sockets = {}; //socketId --> socket
const variants = require("./variants.js");
const Crypto = require("crypto");
let sockets = {}; //socketId --> socket
const variants = require("./variants.js");
const Crypto = require("crypto");
// Provide seed in case of, so that both players initialize with same FEN
function launchGame(gid) {
// Provide seed in case of, so that both players initialize with same FEN
function launchGame(gid) {
- for (const p of games[gid].players) {
- send(p.sid,
- "gamestart",
- Object.assign({randvar: p.randvar}, gameInfo));
- }
+ for (const p of games[gid].players)
+ send(p.sid, "gamestart", gameInfo);
- let opponent = undefined,
- choice = undefined;
- const vname = obj.vname,
+ let oppIndex = undefined, //variant name
+ choice = undefined; //variant finally played
+ const vname = obj.vname, //variant requested
randvar = (obj.vname == "_random");
if (vname == "_random") {
// Pick any current challenge if possible
randvar = (obj.vname == "_random");
if (vname == "_random") {
// Pick any current challenge if possible
if (choice == "_random")
choice = getRandomVariant();
// Launch game
let players = [
{sid: sid, name: obj.name, randvar: randvar},
if (choice == "_random")
choice = getRandomVariant();
// Launch game
let players = [
{sid: sid, name: obj.name, randvar: randvar},
- games[obj.gid].players.reverse(),
- games[obj.gid].options);
+ games[obj.gid].players.reverse(),
+ games[obj.gid].options);
games[obj.gid].fen = obj.fen;
games[obj.gid].time = Date.now(); //update timestamp in case of
const playingWhite = (games[obj.gid].players[0].sid == sid);
games[obj.gid].fen = obj.fen;
games[obj.gid].time = Date.now(); //update timestamp in case of
const playingWhite = (games[obj.gid].players[0].sid == sid);