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:
parent
a00bd32552
commit
2e35e55925
1 changed files with 65 additions and 0 deletions
65
rlgterm.js
65
rlgterm.js
|
|
@ -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";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue