var Game = require("../js/game.js"); var queues = { runners: [], gods: [] } var games = []; function cleanQueue(queue) { queue.forEach(function(elem, i) { if (elem.stale) queue.splice(i, 1); }); } function tryStartGame() { cleanQueue(queues.runners); cleanQueue(queues.gods); if (queues.runners.length === 0 || queues.gods.length === 0) return; var players = [queues.runners.shift(), queues.gods.shift()]; var game = new Game(players); players.forEach(function(p) { p.data.game = game; }); games.push(game); } module.exports = function(args, req, sock) { if (args[1] === "start") { sock.data = { req: req, type: args[2], game: null, stale: false } if (req.data.type === "runner") { queues.runners.push(sock); } else if (req.data.type === "god") { queues.gods.push(sock); } else { return req.fail(); } sock.on("close", function() { sock.data.stale = true; }); tryStartGame(); return; } else { if (!sock.data.game) return req.error("Not in a game."); sock.data.game.message(args, req, sock); } }