home · contact · privacy
Augment map display with thing amount info.
[plomrogue2] / rogue_chat_nocanvas_monochrome.html
index d9732dad32cb3d9e28e97fc8036bdcef3f39c335..1f2ebe0dcd1865ba8b25e5329c55a9ce8e97aa71 100644 (file)
@@ -23,6 +23,8 @@ move down-left (hex grid): <input id="key_hex_move_downleft" type="text" value="
 move left (hex grid): <input id="key_hex_move_left" type="text" value="a" /><br />
 help: <input id="key_help" type="text" value="h" /><br />
 flatten surroundings: <input id="key_flatten" type="text" value="F" /><br />
+take thing under player: <input id="key_take_thing" type="text" value="z" /><br />
+drop carried thing: <input id="key_drop_thing" type="text" value="u" /><br />
 switch to chat mode: <input id="key_switch_to_chat" type="text" value="t" /><br />
 switch to play mode: <input id="key_switch_to_play" type="text" value="p" /><br />
 switch to study mode: <input id="key_switch_to_study" type="text" value="?" /><br />
@@ -444,18 +446,24 @@ 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;
+            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 + ' ';
+            };
+            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') {
@@ -465,7 +473,7 @@ let tui = {
     } 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 {
@@ -537,6 +545,12 @@ let tui = {
           if (game.tasks.includes('MOVE')) {
               content += "[" + movement_keys_desc + "] – move player\n";
           }
+          if (game.tasks.includes('PICK_UP')) {
+              content += "[" + this.keys.take_thing + "] – take thing under player\n";
+          }
+          if (game.tasks.includes('DROP')) {
+              content += "[" + this.keys.drop_thing + "] – drop carried thing\n";
+          }
           if (game.tasks.includes('FLATTEN_SURROUNDINGS')) {
               content += "[" + tui.keys.flatten + "] – flatten player's surroundings\n";
           }
@@ -826,6 +840,12 @@ tui.inputEl.addEventListener('keydown', (event) => {
           } else if (event.key === tui.keys.flatten
                      && game.tasks.includes('FLATTEN_SURROUNDINGS')) {
               server.send(["TASK:FLATTEN_SURROUNDINGS", tui.password]);
+          } else if (event.key === tui.keys.take_thing
+                     && game.tasks.includes('PICK_UP')) {
+              server.send(["TASK:PICK_UP"]);
+          } else if (event.key === tui.keys.drop_thing
+                     && game.tasks.includes('DROP')) {
+              server.send(["TASK:DROP"]);
           } else if (event.key in tui.movement_keys
                      && game.tasks.includes('MOVE')) {
               server.send(['TASK:MOVE', tui.movement_keys[event.key]]);