Mercurial > hg > rlgwebd
comparison rlgterm.js @ 44:b848cb50cd69
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.
author | John "Elwin" Edwards <elwin@sdf.org> |
---|---|
date | Sat, 09 Jun 2012 14:13:07 -0700 |
parents | ea3b7775009d |
children | 1bbd0e76ba92 |
comparison
equal
deleted
inserted
replaced
43:c4efc7522e7b | 44:b848cb50cd69 |
---|---|
43 } | 43 } |
44 else { | 44 else { |
45 this.set(200); | 45 this.set(200); |
46 this.state = 0; | 46 this.state = 0; |
47 } | 47 } |
48 } | |
49 }; | |
50 | |
51 /* Data on the available games. */ | |
52 var games = { | |
53 "rogue3": { | |
54 "name": "Rogue V3", | |
55 "uname": "rogue3" | |
56 }, | |
57 "rogue4": { | |
58 "name": "Rogue V4", | |
59 "uname": "rogue4" | |
60 }, | |
61 "rogue5": { | |
62 "name": "Rogue V5", | |
63 "uname": "rogue5" | |
64 }, | |
65 "srogue": { | |
66 "name": "Super-Rogue", | |
67 "uname": "srogue" | |
48 } | 68 } |
49 }; | 69 }; |
50 | 70 |
51 /* Login name and key */ | 71 /* Login name and key */ |
52 var lname = null; | 72 var lname = null; |
380 document.getElementById("input_pw").value = ""; | 400 document.getElementById("input_pw").value = ""; |
381 } | 401 } |
382 }; | 402 }; |
383 req.open('POST', '/login', true); | 403 req.open('POST', '/login', true); |
384 req.send(JSON.stringify(loginmsg)); | 404 req.send(JSON.stringify(loginmsg)); |
405 return; | |
406 } | |
407 | |
408 function getchoices() { | |
409 if (termemu.sessid != null || !lcred) | |
410 return; | |
411 var req = new XMLHttpRequest(); | |
412 req.onreadystatechange = function () { | |
413 if (req.readyState != 4 || req.status != 200) | |
414 return; | |
415 var reply; | |
416 try { | |
417 reply = JSON.parse(req.responseText); | |
418 } catch (e) { | |
419 if (e instanceof SyntaxError) | |
420 return; | |
421 } | |
422 if (!("name" in reply) || reply["name"] != lname || !("stat" in reply)) | |
423 return; | |
424 var statdiv = document.createElement("div"); | |
425 for (var gname in reply.stat) { | |
426 if (!(gname in games)) | |
427 continue; | |
428 var stext; | |
429 if (reply.stat[gname] == "s") | |
430 stext = games[gname].name + ": Resume your game"; | |
431 else if (reply.stat[gname] == "0") | |
432 stext = games[gname].name + ": Start a game"; | |
433 else if (reply.stat[gname] == "p") | |
434 stext = games[gname].name + ": Game in progress"; | |
435 else | |
436 continue; | |
437 var tnode = document.createTextNode(stext); | |
438 var gamediv = document.createElement("div"); | |
439 gamediv.appendChild(tnode); | |
440 statdiv.appendChild(gamediv); | |
441 } | |
442 if (!statdiv.hasChildNodes()) { | |
443 statdiv.appendChild(document.createTextNode("No known games?")); | |
444 } | |
445 document.getElementById("startgame").appendChild(statdiv); | |
446 }; | |
447 req.open('GET', '/pstatus/' + lname, true); | |
448 req.send(); | |
385 return; | 449 return; |
386 } | 450 } |
387 | 451 |
388 function startgame(ev) { | 452 function startgame(ev) { |
389 ev.preventDefault(); | 453 ev.preventDefault(); |
492 if (mode == "choose") { | 556 if (mode == "choose") { |
493 document.getElementById("keyboard").style.display = "none"; | 557 document.getElementById("keyboard").style.display = "none"; |
494 document.getElementById("startgame").style.display = "block"; | 558 document.getElementById("startgame").style.display = "block"; |
495 document.getElementById("login").style.display = "none"; | 559 document.getElementById("login").style.display = "none"; |
496 document.getElementById("register").style.display = "none"; | 560 document.getElementById("register").style.display = "none"; |
561 getchoices(); | |
497 } | 562 } |
498 else if (mode == "login") { | 563 else if (mode == "login") { |
499 document.getElementById("keyboard").style.display = "none"; | 564 document.getElementById("keyboard").style.display = "none"; |
500 document.getElementById("startgame").style.display = "none"; | 565 document.getElementById("startgame").style.display = "none"; |
501 document.getElementById("login").style.display = "block"; | 566 document.getElementById("login").style.display = "block"; |