home · contact · privacy
Remove chat QUERY.
[plomrogue2] / rogue_chat_nocanvas_monochrome.html
index e5bef1aa4d8a55ea2450874ab81def6e346b078b..e699a96efee25a3f51970df37916bc3e69eba425 100644 (file)
@@ -34,7 +34,8 @@ toggle terrain/control view (from study mode): <input id="key_toggle_map_mode" t
 </div>
 <script>
 "use strict";
-let websocket_location = "wss://plomlompom.com/rogue_chat/";
+//let websocket_location = "wss://plomlompom.com/rogue_chat/";
+let websocket_location = "ws://localhost:8000/";
 
 let rows_selector = document.getElementById("n_rows");
 let cols_selector = document.getElementById("n_cols");
@@ -175,20 +176,18 @@ let server = {
         this.url = url;
         this.websocket = new WebSocket(this.url);
         this.websocket.onopen = function(event) {
-            window.setInterval(function() { server.send(['PING']) }, 30000);
-            this.send('TASKS');
+            server.connected = true;
+            server.send(['TASKS']);
             tui.log_msg("@ server connected! :)");
             tui.switch_mode(mode_login);
         };
         this.websocket.onclose = function(event) {
+            server.connected = false;
+            tui.switch_mode(mode_waiting_for_server);
             tui.log_msg("@ server disconnected :(");
-            tui.log_msg("@ hint: try the '/reconnect' command");
         };
            this.websocket.onmessage = this.handle_event;
         },
-    reconnect: function() {
-          this.reconnect_to(this.url);
-    },
     reconnect_to: function(url) {
         this.websocket.close();
         this.init(url);
@@ -214,6 +213,8 @@ let server = {
             tui.init_keys();
             game.map_size = parser.parse_yx(tokens[2]);
             game.map = tokens[3]
+        } else if (tokens[0] === 'FOV') {
+            game.fov = tokens[1]
         } else if (tokens[0] === 'MAP_CONTROL') {
             game.map_control = tokens[1]
         } else if (tokens[0] === 'GAME_STATE_COMPLETE') {
@@ -253,7 +254,7 @@ let server = {
         } else if (tokens[0] === 'GAME_ERROR') {
             tui.log_msg('? game error: ' + tokens[1]);
         } else if (tokens[0] === 'PONG') {
-            console.log('PONG');
+            ;
         } else {
             tui.log_msg('? unhandled input: ' + event.data);
         }
@@ -297,7 +298,7 @@ class Mode {
 let mode_waiting_for_server = new Mode('waiting_for_server', 'Waiting for a server response.', false, false, true);
 let mode_login = new Mode('login', 'Pick your player name.', true, false, true);
 let mode_post_login_wait = new Mode('waiting for game world', 'Waiting for a server response.', false, false, true);
-let mode_chat = new Mode('chat', 'This mode allows you to engage in chit-chat with other users.  Any line you enter into the input prompt that does not start with a "/" will be sent to all users.  Lines that start with a "/" are used for commands like:', true, false);
+let mode_chat = new Mode('chat', 'This mode allows you to engage in chit-chat with other users.  Any line you enter into the input prompt that does not start with a "/" will be sent out to nearby players – but barriers and distance will reduce what they can read, so stand close to them to ensure they get your message.  Lines that start with a "/" are used for commands like:', true, false);
   let mode_annotate = new Mode('annotate', 'This mode allows you to add/edit a comment on the tile you are currently standing on (provided your map editing password authorizes you so).  Hit Return to leave.', true, true);
 let mode_play = new Mode('play', 'This mode allows you to interact with the map.', false, false);
 let mode_study = new Mode('study', 'This mode allows you to study the map and its tiles in detail.  Move the question mark over a tile, and the right half of the screen will show detailed information on it.', false, true);
@@ -545,7 +546,7 @@ let tui = {
           content += '[' + this.keys.switch_to_play + '] – play mode\n';
       } else if (this.mode == mode_chat) {
           content += '/nick NAME – re-name yourself to NAME\n';
-          content += '/msg USER TEXT – send TEXT to USER\n';
+          //content += '/msg USER TEXT – send TEXT to USER\n';
           content += '/' + this.keys.switch_to_play + ' or /play – switch to play mode\n';
           content += '/' + this.keys.switch_to_study + ' or /study – switch to study mode\n';
       }
@@ -681,8 +682,11 @@ let explorer = {
         server.send(["GET_ANNOTATION", unparser.to_yx(explorer.position)]);
     },
     get_info: function() {
-        let info = "";
         let position_i = this.position[0] * game.map_size[1] + this.position[1];
+        if (game.fov[position_i] != '.') {
+            return 'outside field of view';
+        };
+        let info = "";
         info += "TERRAIN: " + game.map[position_i] + "\n";
         for (let t_id in game.things) {
              let t = game.things[t_id];
@@ -779,19 +783,13 @@ tui.inputEl.addEventListener('keydown', (event) => {
                     } else {
                         tui.log_msg('? need new name');
                     }
-                } else if (tokens[0].slice(1) == 'msg') {
-                    if (tokens.length > 2) {
-                        let msg = tui.inputEl.value.slice(token_starts[2]);
-                        server.send(['QUERY', tokens[1], msg]);
-                    } else {
-                        tui.log_msg('? need message target and message');
-                    }
-                } else if (tokens[0].slice(1) == 'reconnect') {
-                   if (tokens.length > 1) {
-                server.reconnect_to(tokens[1]);
-                   } else {
-                        server.reconnect();
-                   }
+                //} else if (tokens[0].slice(1) == 'msg') {
+                //    if (tokens.length > 2) {
+                //        let msg = tui.inputEl.value.slice(token_starts[2]);
+                //        server.send(['QUERY', tokens[1], msg]);
+                //    } else {
+                //        tui.log_msg('? need message target and message');
+                //    }
                 } else {
                     tui.log_msg('? unknown command');
                 }
@@ -876,5 +874,13 @@ window.setInterval(function() {
         tui.inputEl.focus();
     }
 }, 100);
+window.setInterval(function() {
+    if (server.connected) {
+        server.send(['PING']);
+    } else {
+        server.reconnect_to(server.url);
+        tui.log_msg('@ attempting reconnect …')
+    }
+}, 5000);
 </script>
 </body></html>