X-Git-Url: https://git.auder.net/?p=xogo.git;a=blobdiff_plain;f=server.js;h=0382e375e5b7173c830f72ea1dc4376339777acb;hp=5661136105a2d50628a72695b48a93ed7532eb78;hb=57b8015b5c22ccfd419df11b9d0174484397c417;hpb=c9ab034035a3cac65e4ac9f48a946ecef5ed111e diff --git a/server.js b/server.js index 5661136..0382e37 100644 --- a/server.js +++ b/server.js @@ -63,9 +63,9 @@ wss.on("connection", (socket, req) => { switch (obj.code) { // Send challenge (may trigger game creation) case "seekgame": { - 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 @@ -73,22 +73,28 @@ wss.on("connection", (socket, req) => { if (currentChalls.length >= 1) { choice = currentChalls[Math.floor(Math.random() * currentChalls.length)]; - opponent = challenges[choice]; + oppIndex = choice; } } else if (challenges[vname]) { - opponent = challenges[vname]; + // Anyone wanting to play the same variant ? choice = vname; + oppIndex = vname; } - if (opponent) { - delete challenges[choice]; + else if (challenges["_random"]) { + // Anyone accepting any variant (including vname) ? + choice = vname; + oppIndex = "_random"; + } + if (oppIndex) { if (choice == "_random") choice = getRandomVariant(); // Launch game let players = [ {sid: sid, name: obj.name, randvar: randvar}, - opponent + Object.assign({}, challenges[oppIndex]) ]; + delete challenges[oppIndex]; if (Math.random() < 0.5) players = players.reverse(); // Empty options = default