rlgterm.js: present game options to the player.

Use the new player-status interface to display the state of any ongoing
games when the player logs in.
This commit is contained in:
John "Elwin" Edwards 2012-06-09 14:13:07 -07:00
parent a00bd32552
commit 2e35e55925

View file

@ -48,6 +48,26 @@ var ajaxstate = {
}
};
/* Data on the available games. */
var games = {
"rogue3": {
"name": "Rogue V3",
"uname": "rogue3"
},
"rogue4": {
"name": "Rogue V4",
"uname": "rogue4"
},
"rogue5": {
"name": "Rogue V5",
"uname": "rogue5"
},
"srogue": {
"name": "Super-Rogue",
"uname": "srogue"
}
};
/* Login name and key */
var lname = null;
var lcred = null;
@ -385,6 +405,50 @@ function formlogin(ev) {
return;
}
function getchoices() {
if (termemu.sessid != null || !lcred)
return;
var req = new XMLHttpRequest();
req.onreadystatechange = function () {
if (req.readyState != 4 || req.status != 200)
return;
var reply;
try {
reply = JSON.parse(req.responseText);
} catch (e) {
if (e instanceof SyntaxError)
return;
}
if (!("name" in reply) || reply["name"] != lname || !("stat" in reply))
return;
var statdiv = document.createElement("div");
for (var gname in reply.stat) {
if (!(gname in games))
continue;
var stext;
if (reply.stat[gname] == "s")
stext = games[gname].name + ": Resume your game";
else if (reply.stat[gname] == "0")
stext = games[gname].name + ": Start a game";
else if (reply.stat[gname] == "p")
stext = games[gname].name + ": Game in progress";
else
continue;
var tnode = document.createTextNode(stext);
var gamediv = document.createElement("div");
gamediv.appendChild(tnode);
statdiv.appendChild(gamediv);
}
if (!statdiv.hasChildNodes()) {
statdiv.appendChild(document.createTextNode("No known games?"));
}
document.getElementById("startgame").appendChild(statdiv);
};
req.open('GET', '/pstatus/' + lname, true);
req.send();
return;
}
function startgame(ev) {
ev.preventDefault();
if (termemu.sessid != null || !lcred)
@ -494,6 +558,7 @@ function setmode(mode, ev) {
document.getElementById("startgame").style.display = "block";
document.getElementById("login").style.display = "none";
document.getElementById("register").style.display = "none";
getchoices();
}
else if (mode == "login") {
document.getElementById("keyboard").style.display = "none";