home · contact · privacy
Persist Thing names, simplify their client info display.
[plomrogue2] / rogue_chat_nocanvas_monochrome.html
index f978421590815a40877f704e13001bc72631c6e3..971677687357b5d54a51701005a4fed4ec0b6d08 100644 (file)
@@ -36,8 +36,7 @@ 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 = "ws://localhost:8000/";
+let websocket_location = "wss://plomlompom.com/rogue_chat/";
 
 let rows_selector = document.getElementById("n_rows");
 let cols_selector = document.getElementById("n_cols");
@@ -215,6 +214,11 @@ let server = {
             if (t) {
                 t.name_ = tokens[2];
             };
+        } else if (tokens[0] === 'THING_CHAR') {
+            let t = game.get_thing(tokens[1], false);
+            if (t) {
+                t.player_char = tokens[2];
+            };
         } else if (tokens[0] === 'TASKS') {
             game.tasks = tokens[1].split(',')
         } else if (tokens[0] === 'THING_TYPE') {
@@ -446,28 +450,37 @@ let tui = {
             line = [];
             j = 0;
         };
-        line.push(map_content[i]);
+        line.push(map_content[i] + ' ');
     };
     map_lines_split.push(line);
     if (this.map_mode == 'terrain') {
+        let used_positions = [];
         for (const thing_id in game.things) {
             let t = game.things[thing_id];
             let symbol = game.thing_types[t.type_];
-            map_lines_split[t.position[0]][t.position[1]] = symbol;
+            let meta_char = ' ';
+            if (t.player_char) {
+                meta_char = t.player_char;
+            }
+            if (used_positions.includes(t.position.toString())) {
+                meta_char = '+';
+            };
+            map_lines_split[t.position[0]][t.position[1]] = symbol + meta_char;
+            used_positions.push(t.position.toString());
         };
     }
     if (tui.mode.shows_info) {
-        map_lines_split[explorer.position[0]][explorer.position[1]] = '?';
+        map_lines_split[explorer.position[0]][explorer.position[1]] = '??';
     }
     let map_lines = []
     if (game.map_geometry == 'Square') {
         for (let line_split of map_lines_split) {
-            map_lines.push(line_split.join(' '));
+            map_lines.push(line_split.join(''));
         };
     } else if (game.map_geometry == 'Hex') {
         let indent = 0
         for (let line_split of map_lines_split) {
-            map_lines.push(' '.repeat(indent) + line_split.join(' '));
+            map_lines.push(' '.repeat(indent) + line_split.join(''));
             if (indent == 0) {
                 indent = 1;
             } else {
@@ -709,9 +722,13 @@ let explorer = {
         for (let t_id in game.things) {
              let t = game.things[t_id];
              if (t.position[0] == this.position[0] && t.position[1] == this.position[1]) {
-                 info += "THING: " + t.type_;
+                 let symbol = game.thing_types[t.type_];
+                 info += "THING: " + t.type_ + " / " + symbol;
+                 if (t.player_char) {
+                     info += t.player_char;
+                 };
                  if (t.name_) {
-                     info += " (name: " + t.name_ + ")";
+                     info += " (" + t.name_ + ")";
                  }
                  info += "\n";
              }