comparison rlgterm.js @ 186:674e8899703b

Client: improve messages at the end of watching a game. The messages differentiate between the user stopping watching and the watched game coming to an end.
author John "Elwin" Edwards
date Tue, 20 Jan 2015 16:06:12 -0500
parents bf518a00190b
children 12a733792e0b
comparison
equal deleted inserted replaced
185:bbfda4a4eb7f 186:674e8899703b
28 /* The session id assigned by the server. */ 28 /* The session id assigned by the server. */
29 connect: false, 29 connect: false,
30 /* Login name and key are now in sessionStorage. */ 30 /* Login name and key are now in sessionStorage. */
31 /* Whether the game is being played or just watched. */ 31 /* Whether the game is being played or just watched. */
32 playing: false, 32 playing: false,
33 /* If watching, the name of the player. */
34 playername: null,
35 /* Whether the Stop button was pushed. */
36 leaving: false,
33 /* WebSocket for communication */ 37 /* WebSocket for communication */
34 sock: null 38 sock: null
35 }; 39 };
36 40
37 /* The interval ID for checking the status of current games. */ 41 /* The interval ID for checking the status of current games. */
654 termemu.resize(msgObject.h, msgObject.w); 658 termemu.resize(msgObject.h, msgObject.w);
655 termemu.reset(); 659 termemu.reset();
656 termemu.toAltBuf(); 660 termemu.toAltBuf();
657 var pname = msgObject.p; 661 var pname = msgObject.p;
658 var gname = games[msgObject.g].name; 662 var gname = games[msgObject.g].name;
663 session.playername = pname;
659 message("You are now watching " + pname + " play " + gname + "."); 664 message("You are now watching " + pname + " play " + gname + ".");
660 } 665 }
661 else if (msgObject.t == 'd') { 666 else if (msgObject.t == 'd') {
662 writeData(msgObject.d); 667 writeData(msgObject.d);
663 } 668 }
723 728
724 function gameover() { 729 function gameover() {
725 if (!session.connect) 730 if (!session.connect)
726 return; 731 return;
727 /* TODO IFACE2 If the end was unexpected, tell player the game was saved. */ 732 /* TODO IFACE2 If the end was unexpected, tell player the game was saved. */
728 if (session.playing) 733 if (session.playing) {
729 message("Finished playing."); 734 message("Finished playing.");
730 else 735 }
731 message("Finished watching."); 736 else {
737 if (session.leaving) {
738 /* Client-initiated: the user stopped watching. */
739 message("Finished watching " + session.playername + ".");
740 }
741 else {
742 /* Server-initiated: end of game. */
743 message(session.playername + " has finished playing.");
744 }
745 session.playername = null;
746 }
732 session.connect = false; 747 session.connect = false;
733 session.playing = false; 748 session.playing = false;
749 session.leaving = false;
734 termemu.toNormBuf(); 750 termemu.toNormBuf();
735 if ("lcred" in sessionStorage) 751 if ("lcred" in sessionStorage)
736 setmode("choose"); 752 setmode("choose");
737 else 753 else
738 setmode("login"); 754 setmode("login");
743 sessionStorage.removeItem("lcred"); 759 sessionStorage.removeItem("lcred");
744 sessionStorage.removeItem("lname"); 760 sessionStorage.removeItem("lname");
745 setmode("login"); 761 setmode("login");
746 } 762 }
747 763
748 /* TODO determine whether this is needed */
749 function stop() { 764 function stop() {
750 if (!session.connect) 765 if (!session.connect)
751 return; 766 return;
752 if (session.sock) { 767 if (session.sock) {
768 session.leaving = true;
753 session.sock.close(); 769 session.sock.close();
754 return; 770 return;
755 } 771 }
756 } 772 }
757 773