Mercurial > hg > rlgwebd
comparison rlgterm.js @ 58:7a50b4412fea
Move credentials into the drivers.
The session id, or whether the session is currently active on the
server, are better handled in the drivers than in termemu.js.
author | John "Elwin" Edwards <elwin@sdf.org> |
---|---|
date | Tue, 19 Jun 2012 13:40:30 -0700 |
parents | e7c864e80a79 |
children | 00b985b8ba6a |
comparison
equal
deleted
inserted
replaced
57:e7c864e80a79 | 58:7a50b4412fea |
---|---|
69 }; | 69 }; |
70 | 70 |
71 /* Login name and key */ | 71 /* Login name and key */ |
72 var lname = null; | 72 var lname = null; |
73 var lcred = null; | 73 var lcred = null; |
74 /* The session id assigned by the server. */ | |
75 var sessid = null; | |
74 | 76 |
75 function writeData(hexstr) { | 77 function writeData(hexstr) { |
76 var codenum; | 78 var codenum; |
77 var codes = []; | 79 var codes = []; |
78 var nc; | 80 var nc; |
209 } | 211 } |
210 return havedata; | 212 return havedata; |
211 } | 213 } |
212 | 214 |
213 function getData() { | 215 function getData() { |
214 if (termemu.sessid == null) | 216 if (sessid == null) |
215 return; | 217 return; |
216 var datareq = new XMLHttpRequest(); | 218 var datareq = new XMLHttpRequest(); |
217 var msg = JSON.stringify({"id": termemu.sessid, "t": "n"}); | 219 var msg = JSON.stringify({"id": sessid, "t": "n"}); |
218 datareq.onreadystatechange = function () { | 220 datareq.onreadystatechange = function () { |
219 if (datareq.readyState == 4 && datareq.status == 200) { | 221 if (datareq.readyState == 4 && datareq.status == 200) { |
220 var wasdata = processMsg(datareq.responseText); | 222 var wasdata = processMsg(datareq.responseText); |
221 if (wasdata != null) { | 223 if (wasdata != null) { |
222 if (wasdata) | 224 if (wasdata) |
241 } | 243 } |
242 } | 244 } |
243 | 245 |
244 function sendback(str) { | 246 function sendback(str) { |
245 /* For responding to terminal queries. */ | 247 /* For responding to terminal queries. */ |
246 var msgDict = {"id": termemu.sessid, "t": "d", "n": nsend++, "d": str}; | 248 var msgDict = {"id": sessid, "t": "d", "n": nsend++, "d": str}; |
247 var datareq = new XMLHttpRequest(); | 249 var datareq = new XMLHttpRequest(); |
248 datareq.onreadystatechange = postResponseHandler; | 250 datareq.onreadystatechange = postResponseHandler; |
249 datareq.open('POST', '/feed', true); | 251 datareq.open('POST', '/feed', true); |
250 datareq.send(JSON.stringify(msgDict)); | 252 datareq.send(JSON.stringify(msgDict)); |
251 return; | 253 return; |
252 } | 254 } |
253 | 255 |
254 function sendkey(ev) { | 256 function sendkey(ev) { |
255 if (termemu.sessid == null) | 257 if (sessid == null) |
256 return; | 258 return; |
257 var keynum = ev.keyCode; | 259 var keynum = ev.keyCode; |
258 var code; | 260 var code; |
259 if (keynum >= ev.DOM_VK_A && keynum <= ev.DOM_VK_Z) { | 261 if (keynum >= ev.DOM_VK_A && keynum <= ev.DOM_VK_Z) { |
260 /* Letters. This assumes the codes are 65-90. */ | 262 /* Letters. This assumes the codes are 65-90. */ |
288 else { | 290 else { |
289 debug(1, "Ignoring keycode " + keynum); | 291 debug(1, "Ignoring keycode " + keynum); |
290 return; | 292 return; |
291 } | 293 } |
292 // Isn't this check redundant? | 294 // Isn't this check redundant? |
293 if (termemu.sessid != null) | 295 if (sessid != null) |
294 ev.preventDefault(); | 296 ev.preventDefault(); |
295 var datareq = new XMLHttpRequest(); | 297 var datareq = new XMLHttpRequest(); |
296 var msgDict = {"id": termemu.sessid, "t": "d", "n": nsend++, "d": code}; | 298 var msgDict = {"id": sessid, "t": "d", "n": nsend++, "d": code}; |
297 datareq.onreadystatechange = postResponseHandler; | 299 datareq.onreadystatechange = postResponseHandler; |
298 datareq.open('POST', '/feed', true); | 300 datareq.open('POST', '/feed', true); |
299 datareq.send(JSON.stringify(msgDict)); | 301 datareq.send(JSON.stringify(msgDict)); |
300 return; | 302 return; |
301 } | 303 } |
303 var charshifts = { '-': "5f", '=': "2b", '[': "7b", ']': "7d", '\\': "7c", | 305 var charshifts = { '-': "5f", '=': "2b", '[': "7b", ']': "7d", '\\': "7c", |
304 ';': "3a", '\'': "22", ',': "3c", '.': "3e", '/': "3f", '`': "7e" | 306 ';': "3a", '\'': "22", ',': "3c", '.': "3e", '/': "3f", '`': "7e" |
305 } | 307 } |
306 | 308 |
307 function vkey(c) { | 309 function vkey(c) { |
308 if (termemu.sessid == null) | 310 if (sessid == null) |
309 return; | 311 return; |
310 var keystr; | 312 var keystr; |
311 if (c.match(/^[a-z]$/)) { | 313 if (c.match(/^[a-z]$/)) { |
312 if (termemu.ctrlp()) { | 314 if (termemu.ctrlp()) { |
313 var n = c.charCodeAt(0) - 96; | 315 var n = c.charCodeAt(0) - 96; |
341 keystr = c.charCodeAt(0).toString(16); | 343 keystr = c.charCodeAt(0).toString(16); |
342 } | 344 } |
343 else | 345 else |
344 return; | 346 return; |
345 var datareq = new XMLHttpRequest(); | 347 var datareq = new XMLHttpRequest(); |
346 var msgDict = {"id": termemu.sessid, "t": "d", "n": nsend++, "d": keystr}; | 348 var msgDict = {"id": sessid, "t": "d", "n": nsend++, "d": keystr}; |
347 datareq.onreadystatechange = postResponseHandler; | 349 datareq.onreadystatechange = postResponseHandler; |
348 datareq.open('POST', '/feed', true); | 350 datareq.open('POST', '/feed', true); |
349 datareq.send(JSON.stringify(msgDict)); | 351 datareq.send(JSON.stringify(msgDict)); |
350 return; | 352 return; |
351 } | 353 } |
378 return; | 380 return; |
379 } | 381 } |
380 | 382 |
381 function formlogin(ev) { | 383 function formlogin(ev) { |
382 ev.preventDefault(); | 384 ev.preventDefault(); |
383 if (termemu.sessid != null) | 385 if (sessid != null) |
384 return; | 386 return; |
385 var loginmsg = {}; | 387 var loginmsg = {}; |
386 loginmsg["name"] = document.getElementById("input_name").value; | 388 loginmsg["name"] = document.getElementById("input_name").value; |
387 loginmsg["pw"] = document.getElementById("input_pw").value; | 389 loginmsg["pw"] = document.getElementById("input_pw").value; |
388 var req = new XMLHttpRequest(); | 390 var req = new XMLHttpRequest(); |
408 req.send(JSON.stringify(loginmsg)); | 410 req.send(JSON.stringify(loginmsg)); |
409 return; | 411 return; |
410 } | 412 } |
411 | 413 |
412 function getcurrent() { | 414 function getcurrent() { |
413 if (termemu.sessid) | 415 if (sessid) |
414 return; | 416 return; |
415 var req = new XMLHttpRequest(); | 417 var req = new XMLHttpRequest(); |
416 req.onreadystatechange = function () { | 418 req.onreadystatechange = function () { |
417 if (req.readyState != 4 || req.status != 200) | 419 if (req.readyState != 4 || req.status != 200) |
418 return; | 420 return; |
452 req.send(); | 454 req.send(); |
453 return; | 455 return; |
454 } | 456 } |
455 | 457 |
456 function getchoices() { | 458 function getchoices() { |
457 if (termemu.sessid != null || !lcred) | 459 if (sessid != null || !lcred) |
458 return; | 460 return; |
459 var req = new XMLHttpRequest(); | 461 var req = new XMLHttpRequest(); |
460 req.onreadystatechange = function () { | 462 req.onreadystatechange = function () { |
461 if (req.readyState != 4 || req.status != 200) | 463 if (req.readyState != 4 || req.status != 200) |
462 return; | 464 return; |
519 } | 521 } |
520 return starter; | 522 return starter; |
521 } | 523 } |
522 | 524 |
523 function startgame(game) { | 525 function startgame(game) { |
524 if (termemu.sessid != null || !lcred) | 526 if (sessid != null || !lcred) |
525 return; | 527 return; |
526 var smsg = {}; | 528 var smsg = {}; |
527 smsg["key"] = lcred; | 529 smsg["key"] = lcred; |
528 smsg["game"] = game.uname; | 530 smsg["game"] = game.uname; |
529 smsg["h"] = 24; | 531 smsg["h"] = 24; |
533 if (req.readyState != 4 || req.status != 200) | 535 if (req.readyState != 4 || req.status != 200) |
534 return; | 536 return; |
535 var reply = JSON.parse(req.responseText); | 537 var reply = JSON.parse(req.responseText); |
536 if (reply.t == 's') { | 538 if (reply.t == 's') { |
537 /* Success */ | 539 /* Success */ |
538 termemu.sessid = reply.id; | 540 sessid = reply.id; |
539 termemu.resize(reply.h, reply.w); | 541 termemu.resize(reply.h, reply.w); |
540 setTitle("Playing as " + lname); | 542 setTitle("Playing as " + lname); |
541 debug(1, "Playing with id " + termemu.sessid); | 543 debug(1, "Playing with id " + sessid); |
542 setmode("play"); | 544 setmode("play"); |
543 getData(); | 545 getData(); |
544 } | 546 } |
545 else if (reply.t == 'E') { | 547 else if (reply.t == 'E') { |
546 debug(1, "Could not start game: " + reply.s); | 548 debug(1, "Could not start game: " + reply.s); |
554 return; | 556 return; |
555 } | 557 } |
556 | 558 |
557 function formreg(ev) { | 559 function formreg(ev) { |
558 ev.preventDefault(); | 560 ev.preventDefault(); |
559 if (termemu.sessid != null) | 561 if (sessid != null) |
560 return; | 562 return; |
561 var regmsg = {}; | 563 var regmsg = {}; |
562 regmsg["name"] = document.getElementById("regin_name").value; | 564 regmsg["name"] = document.getElementById("regin_name").value; |
563 regmsg["pw"] = document.getElementById("regin_pw").value; | 565 regmsg["pw"] = document.getElementById("regin_pw").value; |
564 regmsg["email"] = document.getElementById("regin_email").value; | 566 regmsg["email"] = document.getElementById("regin_email").value; |
587 req.send(JSON.stringify(regmsg)); | 589 req.send(JSON.stringify(regmsg)); |
588 return; | 590 return; |
589 } | 591 } |
590 | 592 |
591 function gameover() { | 593 function gameover() { |
592 if (termemu.sessid == null) | 594 if (sessid == null) |
593 return; | 595 return; |
594 /* TODO IFACE2 If the end was unexpected, tell player the game was saved. */ | 596 /* TODO IFACE2 If the end was unexpected, tell player the game was saved. */ |
595 termemu.sessid = null; | 597 sessid = null; |
596 ajaxstate.clear(); | 598 ajaxstate.clear(); |
597 setTitle("Game over."); | 599 setTitle("Game over."); |
598 nsend = 0; | 600 nsend = 0; |
599 nrecv = 0; | 601 nrecv = 0; |
600 msgQ = []; | 602 msgQ = []; |
607 lname = null; | 609 lname = null; |
608 setmode("login"); | 610 setmode("login"); |
609 } | 611 } |
610 | 612 |
611 function stop() { | 613 function stop() { |
612 if (!termemu.sessid) | 614 if (!sessid) |
613 return; | 615 return; |
614 var req = new XMLHttpRequest(); | 616 var req = new XMLHttpRequest(); |
615 req.onreadystatechange = function () { | 617 req.onreadystatechange = function () { |
616 if (req.readyState == 4 && req.status == 200) { | 618 if (req.readyState == 4 && req.status == 200) { |
617 processMsg(req.responseText); | 619 processMsg(req.responseText); |
618 return; | 620 return; |
619 } | 621 } |
620 }; | 622 }; |
621 req.open('POST', '/feed', true); | 623 req.open('POST', '/feed', true); |
622 req.send(JSON.stringify({"id": termemu.sessid, "t": "q"})); | 624 req.send(JSON.stringify({"id": sessid, "t": "q"})); |
623 return; | 625 return; |
624 } | 626 } |
625 | 627 |
626 function setmode(mode, ev) { | 628 function setmode(mode, ev) { |
627 if (ev) | 629 if (ev) |