home · contact · privacy
Automatically log in if login name already provided previously.
[plomrogue2-experiments] / new2 / rogue_chat_nocanvas_monochrome.html
index bb4c771c7cd8eae9dd54605d268fc913679a2fed..406dd805cf8410d9949c399b288bc9f98735d04b 100644 (file)
@@ -151,7 +151,7 @@ let server = {
         this.websocket.onopen = function(event) {
             window.setInterval(function() { server.send(['PING']) }, 30000);
             tui.log_msg("@ server connected! :)");
-            tui.init_login();
+            tui.switch_mode(mode_login);
         };
         this.websocket.onclose = function(event) {
             tui.log_msg("@ server disconnected :(");
@@ -271,7 +271,7 @@ let mode_annotate = new Mode('add message to map tile', true, true);
 let mode_play = new Mode('play / move around', false, false);
 let mode_study = new Mode('check map tiles for messages', false, true);
 let mode_edit = new Mode('write ASCII char to map tile', false, false);
-let mode_teleport = new Mode('teleport away?');
+let mode_teleport = new Mode('teleport away?', true);
 let mode_portal = new Mode('add portal to map tile', true, true);
 
 let tui = {
@@ -335,10 +335,6 @@ let tui = {
         };
     };
   },
-  init_login: function() {
-      this.log_msg("@ please enter your username:");
-      this.switch_mode(mode_login);
-  },
   switch_mode: function(mode, keep_pos=false) {
     if (mode == mode_study && !keep_pos && game.player_id in game.things) {
       explorer.position = game.things[game.player_id].position;
@@ -352,13 +348,19 @@ let tui = {
            this.recalc_input_lines();
         }
     }
-    if (mode == mode_portal && explorer.position in game.portals) {
+    if (mode == mode_login) {
+        if (this.login_name) {
+            server.send(['LOGIN', this.login_name]);
+        } else {
+            this.log_msg("? need login name");
+        }
+    } else if (mode == mode_portal && explorer.position in game.portals) {
         let portal = game.portals[explorer.position]
-       this.inputEl.value = portal;
-       this.recalc_input_lines();
+        this.inputEl.value = portal;
+        this.recalc_input_lines();
     } else if (mode == mode_teleport) {
         tui.log_msg("@ May teleport to: " + tui.teleport_target);
-        tui.log_msg("@ Type Y or y to affirm, other keys to abort.");
+        tui.log_msg("@ Enter 'YES!' to entusiastically affirm.");
     }
     this.full_refresh();
   },
@@ -685,14 +687,22 @@ tui.inputEl.addEventListener('keydown', (event) => {
         event.preventDefault();
     }
     if (tui.mode == mode_login && event.key == 'Enter') {
+        tui.login_name = tui.inputEl.value;
         server.send(['LOGIN', tui.inputEl.value]);
-        tui.switch_mode(mode_login);
+        tui.empty_input();
     } else if (tui.mode == mode_portal && event.key == 'Enter') {
         explorer.set_portal(tui.inputEl.value);
         tui.switch_mode(mode_study, true);
     } else if (tui.mode == mode_annotate && event.key == 'Enter') {
         explorer.annotate(tui.inputEl.value);
         tui.switch_mode(mode_study, true);
+    } else if (tui.mode == mode_teleport && event.key == 'Enter') {
+        if (tui.inputEl.value == 'YES!') {
+            server.reconnect_to(tui.teleport_target);
+        } else {
+            tui.log_msg('@ teleport aborted');
+            tui.switch_mode(mode_play);
+        };
     } else if (tui.mode == mode_chat && event.key == 'Enter') {
         let [tokens, token_starts] = parser.tokenize(tui.inputEl.value);
         if (tokens.length > 0 && tokens[0].length > 0) {