home · contact · privacy
Toggle tile drawing in tile control drawing mode.
authorChristian Heller <c.heller@plomlompom.de>
Wed, 25 Nov 2020 02:06:30 +0000 (03:06 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Wed, 25 Nov 2020 02:06:30 +0000 (03:06 +0100)
config.json
rogue_chat.html
rogue_chat_curses.py

index 7cbbbf55be2aa064c7be1e4db212a1559ea5e32b..164fcee1b5b23cf40fb1eacc50b59bf348bfe15a 100644 (file)
@@ -16,6 +16,7 @@
     "teleport": "p",
     "help": "h",
     "toggle_map_mode": "M",
+    "toggle_tile_draw": "m",
     "hex_move_upleft": "w",
     "hex_move_upright": "e",
     "hex_move_right": "d",
index d24b9f6b8b94eaf290ad87f7562fb7b959646046..136999fe67bdee4733f61cc8190602d21fa85953 100644 (file)
@@ -69,6 +69,7 @@ terminal columns: <input id="n_cols" type="number" step=4 min=80 value=80 />
     <td>
       <button id="switch_to_control_pw_type">change tile control password</button>
       <button id="switch_to_control_tile_type">change tiles control</button>
+      <button id="toggle_tile_draw">toggle tiles control drawing</button>
     </td>
   <tr>
   </tr>
@@ -102,6 +103,7 @@ terminal columns: <input id="n_cols" type="number" step=4 min=80 value=80 />
 <li><input id="key_switch_to_annotate" type="text" value="M" />
 <li><input id="key_switch_to_portal" type="text" value="T" />
 <li>toggle everything/terrain/annotations view: <input id="key_toggle_map_mode" type="text" value="M" />
+<li>toggle everything/terrain/annotations view: <input id="key_toggle_tile_draw" type="text" value="m" />
 </ul>
 </div>
 <script>
@@ -139,7 +141,7 @@ let mode_helps = {
     },
     'control_tile_draw': {
         'short': 'change tiles control',
-        'long': 'This mode is the second of two steps to change tile control areas on the map.  Move cursor around the map to draw selected tile control character'
+        'long': 'This mode is the second of two steps to change tile control areas on the map.  Toggle tile control drawing on, then move cursor around the map to draw selected tile control character.'
     },
     'annotate': {
         'short': 'annotate tile',
@@ -533,6 +535,7 @@ let tui = {
   password: 'foo',
   show_help: false,
   is_admin: false,
+  tile_draw: false,
   mode_waiting_for_server: new Mode('waiting_for_server',
                                      false, false, true),
   mode_login: new Mode('login', true, false, true),
@@ -609,6 +612,7 @@ let tui = {
   switch_mode: function(mode_name) {
     this.inputEl.focus();
     this.map_mode = 'all';
+    this.tile_draw = false;
     if (mode_name == 'admin_enter' && this.is_admin) {
         mode_name = 'admin';
     };
@@ -616,10 +620,7 @@ let tui = {
     if (game.player_id in game.things && (this.mode.shows_info || this.mode.name == 'control_tile_draw')) {
         explorer.position = game.things[game.player_id].position;
         if (this.mode.shows_info) {
-        explorer.query_info();
-        } else if (this.mode.name == 'control_tile_draw') {
-            explorer.send_tile_control_command();
-            this.map_mode = 'control';
+            explorer.query_info();
         }
     }
     this.empty_input();
@@ -675,6 +676,8 @@ let tui = {
     } else if (this.mode.name == 'admin') {
         document.getElementById("switch_to_control_pw_type").disabled = false;
         document.getElementById("switch_to_control_tile_type").disabled = false;
+    } else if (this.mode.name == 'control_tile_draw') {
+        document.getElementById("toggle_tile_draw").disabled = false;
     } else if (this.mode.name == 'study') {
         document.getElementById("toggle_map_mode").disabled = false;
     } else if (this.mode.is_single_char_entry) {
@@ -958,6 +961,10 @@ let tui = {
               content += "[" + tui.keys.flatten + "] – flatten player's surroundings\n";
           }
           content += '\n';
+      } else if (this.mode.name == 'control_tile_draw') {
+          content += "Available actions:\n";
+          content += "[" + tui.keys.toggle_tile_draw + "] – toggle tile control drawing\n";
+          content += '\n';
       } else if (this.mode.name == 'chat') {
           content += '/nick NAME – re-name yourself to NAME\n';
           content += '/' + this.keys.switch_to_play + ' or /play – switch to play mode\n';
@@ -976,6 +983,22 @@ let tui = {
           terminal.write(y, start_x, lines[i]);
       }
   },
+  toggle_tile_draw: function() {
+      if (tui.tile_draw) {
+          tui.tile_draw = false;
+      } else {
+          tui.tile_draw = true;
+      }
+  },
+  toggle_map_mode: function() {
+      if (tui.map_mode == 'terrain') {
+          tui.map_mode = 'annotations';
+      } else if (tui.map_mode == 'annotations') {
+          tui.map_mode = 'all';
+      } else {
+          tui.map_mode = 'terrain';
+      }
+  },
   full_refresh: function() {
     this.links = {};
     terminal.drawBox(0, 0, terminal.rows, terminal.cols);
@@ -1090,7 +1113,7 @@ let explorer = {
             this.position = target
             if (tui.mode.shows_info) {
                 this.query_info();
-            } else if (tui.mode.name == 'control_tile_draw') {
+            } else if (tui.tile_draw) {
                 this.send_tile_control_command();
             }
         } else {
@@ -1278,19 +1301,15 @@ tui.inputEl.addEventListener('keydown', (event) => {
         } else if (event.key in tui.movement_keys) {
             explorer.move(tui.movement_keys[event.key]);
         } else if (event.key == tui.keys.toggle_map_mode) {
-            if (tui.map_mode == 'terrain') {
-                tui.map_mode = 'annotations';
-            } else if (tui.map_mode == 'annotations') {
-                tui.map_mode = 'all';
-            } else {
-                tui.map_mode = 'terrain';
-            }
+            tui.toggle_map_mode();
         };
     } else if (tui.mode.name == 'control_tile_draw') {
         if (tui.mode.mode_switch_on_key(event)) {
               null;
         } else if (event.key in tui.movement_keys) {
             explorer.move(tui.movement_keys[event.key]);
+        } else if (event.key === tui.keys.toggle_tile_draw) {
+            tui.toggle_tile_draw();
         };
     } else if (tui.mode.name == 'admin') {
         if (tui.mode.mode_switch_on_key(event)) {
@@ -1355,14 +1374,11 @@ for (const switchEl  of document.querySelectorAll('[id^="switch_to_"]')) {
         tui.full_refresh();
     }
 };
+document.getElementById("toggle_tile_draw").onclick = function() {
+    tui.toggle_tile_draw();
+}
 document.getElementById("toggle_map_mode").onclick = function() {
-    if (tui.map_mode == 'terrain') {
-        tui.map_mode = 'annotations';
-    } else if (tui.map_mode == 'annotations') {
-        tui.map_mode = 'all';
-    } else {
-        tui.map_mode = 'terrain';
-    }
+    tui.toggle_map_mode();
     tui.full_refresh();
 };
 document.getElementById("take_thing").onclick = function() {
index 67f63a1cd09dd9980f9783a5e737ce79f5f4ad39..698360915a513fa0329e220680081f731ee13866 100755 (executable)
@@ -41,7 +41,7 @@ mode_helps = {
     },
     'control_tile_draw': {
         'short': 'change tiles control',
-        'long': 'This mode is the second of two steps to change tile control areas on the map.  Move cursor around the map to draw selected tile control character'
+        'long': 'This mode is the second of two steps to change tile control areas on the map.  Toggle tile control drawing on, then move cursor around the map to draw selected tile control character.'
     },
     'annotate': {
         'short': 'annotate tile',
@@ -365,6 +365,7 @@ class TUI:
     mode_post_login_wait = Mode('post_login_wait', is_intro=True)
     mode_password = Mode('password', has_input_prompt=True)
     is_admin = False
+    tile_draw = False
 
     def __init__(self, host):
         import os
@@ -407,6 +408,7 @@ class TUI:
             'teleport': 'p',
             'help': 'h',
             'toggle_map_mode': 'M',
+            'toggle_tile_draw': 'm',
             'hex_move_upleft': 'w',
             'hex_move_upright': 'e',
             'hex_move_right': 'd',
@@ -503,6 +505,7 @@ class TUI:
 
     def switch_mode(self, mode_name):
         self.map_mode = 'all'
+        self.tile_draw = False
         if mode_name == 'admin_enter' and self.is_admin:
             mode_name = 'admin'
         self.mode = getattr(self, 'mode_' + mode_name)
@@ -511,9 +514,6 @@ class TUI:
             self.explorer = YX(player.position.y, player.position.x)
             if self.mode.shows_info:
                 self.query_info()
-            elif self.mode.name == 'control_tile_draw':
-                self.send_tile_control_command()
-                self.map_mode = 'control'
         if self.mode.is_single_char_entry:
             self.show_help = True
         if self.mode.name == 'waiting_for_server':
@@ -583,7 +583,7 @@ class TUI:
                 self.explorer = target
                 if self.mode.shows_info:
                     self.query_info()
-                elif self.mode.name == 'control_tile_draw':
+                if self.tile_draw:
                     self.send_tile_control_command()
             else:
                 self.flash = True
@@ -746,6 +746,10 @@ class TUI:
                 if 'FLATTEN_SURROUNDINGS' in self.game.tasks:
                     content += "[%s] – flatten player's surroundings\n" % self.keys['flatten']
                 content += '\n'
+            elif self.mode.name == 'control_tile_draw':
+                content += "Available actions:\n"
+                content += "[%s] – toggle tile control drawing\n" % self.keys['toggle_tile_draw']
+                content += '\n'
             elif self.mode.name == 'chat':
                 content += '/nick NAME – re-name yourself to NAME\n'
                 content += '/%s or /play – switch to play mode\n' % self.keys['switch_to_play']
@@ -937,6 +941,8 @@ class TUI:
                     continue
                 elif key in self.movement_keys:
                     move_explorer(self.movement_keys[key])
+                elif key == self.keys['toggle_tile_draw']:
+                    self.tile_draw = False if self.tile_draw else True
             elif self.mode.name == 'admin':
                 if self.mode.mode_switch_on_key(self, key):
                     continue