home · contact · privacy
Add terrain descriptions.
[plomrogue2] / rogue_chat_nocanvas_monochrome.html
index 1f2ebe0dcd1865ba8b25e5329c55a9ce8e97aa71..7c24a43a3e36ff2e2c95d2fb128f559492a54c39 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");
@@ -180,7 +179,9 @@ let server = {
         this.websocket.onopen = function(event) {
             server.connected = true;
             game.thing_types = {};
+            game.terrains = {};
             server.send(['TASKS']);
+            server.send(['TERRAINS']);
             server.send(['THING_TYPES']);
             tui.log_msg("@ server connected! :)");
             tui.switch_mode(mode_login);
@@ -215,10 +216,17 @@ 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') {
             game.thing_types[tokens[1]] = tokens[2]
+        } else if (tokens[0] === 'TERRAIN') {
+            game.terrains[tokens[1]] = tokens[2]
         } else if (tokens[0] === 'MAP') {
             game.map_geometry = tokens[1];
             tui.init_keys();
@@ -454,11 +462,14 @@ let tui = {
         for (const thing_id in game.things) {
             let t = game.things[thing_id];
             let symbol = game.thing_types[t.type_];
+            let meta_char = ' ';
+            if (t.player_char) {
+                meta_char = t.player_char;
+            }
             if (used_positions.includes(t.position.toString())) {
-                map_lines_split[t.position[0]][t.position[1]] = symbol + '+';
-            } else {
-                map_lines_split[t.position[0]][t.position[1]] = symbol + ' ';
+                meta_char = '+';
             };
+            map_lines_split[t.position[0]][t.position[1]] = symbol + meta_char;
             used_positions.push(t.position.toString());
         };
     }
@@ -468,7 +479,7 @@ let tui = {
     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
@@ -711,13 +722,22 @@ let explorer = {
             return 'outside field of view';
         };
         let info = "";
-        info += "TERRAIN: " + game.map[position_i] + "\n";
+        let terrain_char = game.map[position_i]
+        let terrain_desc = '?'
+        if (game.terrains[terrain_char]) {
+            terrain_desc = game.terrains[terrain_char];
+        };
+        info += 'TERRAIN: "' + terrain_char + '" / ' + terrain_desc + "\n";
         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";
              }