# HG changeset patch # User John "Elwin" Edwards # Date 1339276387 25200 # Node ID b848cb50cd6974bac39e0eb8b221023f6bc2be1f # Parent c4efc7522e7ba14ed6a9c9137c571bca693628ec 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. diff -r c4efc7522e7b -r b848cb50cd69 rlgterm.js --- a/rlgterm.js Sat Jun 09 13:04:46 2012 -0700 +++ b/rlgterm.js Sat Jun 09 14:13:07 2012 -0700 @@ -48,6 +48,26 @@ } }; +/* 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 @@ 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 @@ 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";