123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- 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);
- }
- }
|