comparison rlgwebd.js @ 156:127f9e256d02

Keep a list of dgamelaunch games and put it in the /status message.
author John "Elwin" Edwards
date Tue, 01 Apr 2014 16:43:35 -0700
parents 245a2959f504
children e7f809f06c5c
comparison
equal deleted inserted replaced
155:245a2959f504 156:127f9e256d02
63 63
64 /* Global state */ 64 /* Global state */
65 var logins = {}; 65 var logins = {};
66 var sessions = {}; 66 var sessions = {};
67 var clients = {}; 67 var clients = {};
68 var dglgames = {};
68 var allowlogin = true; 69 var allowlogin = true;
69 var nextsession = 0; 70 var nextsession = 0;
70 var gamemux = new events.EventEmitter(); 71 var gamemux = new events.EventEmitter();
71 72
72 /* Constructor. A TermSession handles a pty and the game running on it. 73 /* Constructor. A TermSession handles a pty and the game running on it.
955 var fname = chunk.slice(2, -1); 956 var fname = chunk.slice(2, -1);
956 var filere = /.*\/([^\/]*)\/([^\/:]*):(node:)?(.*)/; 957 var filere = /.*\/([^\/]*)\/([^\/:]*):(node:)?(.*)/;
957 var matchresult = fname.match(filere); 958 var matchresult = fname.match(filere);
958 if (!matchresult || matchresult[3]) 959 if (!matchresult || matchresult[3])
959 return; 960 return;
960 gname = matchresult[1]; 961 var gname = matchresult[1];
961 pname = matchresult[2]; 962 var pname = matchresult[2];
963 var tag = gname + "/" + pname;
962 if (chunk[0] == "E") { 964 if (chunk[0] == "E") {
963 tslog("DGL: %s is playing %s: %s", pname, gname, fname) 965 tslog("DGL: %s is playing %s: %s", pname, gname, fname)
966 dglgames[tag] = fname;
964 } 967 }
965 else if (chunk[0] == "C") { 968 else if (chunk[0] == "C") {
966 tslog("DGL: %s started playing %s: %s", pname, gname, fname) 969 tslog("DGL: %s started playing %s: %s", pname, gname, fname)
970 dglgames[tag] = fname;
967 } 971 }
968 else if (chunk[0] == "D") { 972 else if (chunk[0] == "D") {
969 tslog("DGL: %s finished playing %s: %s", pname, gname, fname) 973 tslog("DGL: %s finished playing %s: %s", pname, gname, fname)
974 delete dglgames[tag];
970 } 975 }
971 else { 976 else {
972 tslog("Watcher says: %s", chunk) 977 tslog("Watcher says: %s", chunk)
973 } 978 }
974 }); 979 });
1052 gamedesc["n"] = sessid; 1057 gamedesc["n"] = sessid;
1053 gamedesc["p"] = sessions[sessid].pname; 1058 gamedesc["p"] = sessions[sessid].pname;
1054 gamedesc["g"] = sessions[sessid].game.uname; 1059 gamedesc["g"] = sessions[sessid].game.uname;
1055 statusinfo["g"].push(gamedesc); 1060 statusinfo["g"].push(gamedesc);
1056 } 1061 }
1062 statusinfo["dgl"] = [];
1063 for (var tag in dglgames) {
1064 statusinfo["dgl"].push(tag);
1065 }
1057 if (statusinfo.g.length == 0) { 1066 if (statusinfo.g.length == 0) {
1058 callback(statusinfo); 1067 callback(statusinfo);
1059 return; 1068 return;
1060 } 1069 }
1061 function makecallback(i) { 1070 function makecallback(i) {