From: Christian Heller <c.heller@plomlompom.de>
Date: Wed, 25 Nov 2020 02:06:30 +0000 (+0100)
Subject: Toggle tile drawing in tile control drawing mode.
X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/static/%7B%7Bdb.prefix%7D%7D/%7B%7Bprefix%7D%7D/todos?a=commitdiff_plain;h=46ecf6d1bb5a470c9e1a7ec4837462102d7a6487;p=plomrogue2

Toggle tile drawing in tile control drawing mode.
---

diff --git a/config.json b/config.json
index 7cbbbf5..164fcee 100644
--- a/config.json
+++ b/config.json
@@ -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",
diff --git a/rogue_chat.html b/rogue_chat.html
index d24b9f6..136999f 100644
--- a/rogue_chat.html
+++ b/rogue_chat.html
@@ -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() {
diff --git a/rogue_chat_curses.py b/rogue_chat_curses.py
index 67f63a1..6983609 100755
--- a/rogue_chat_curses.py
+++ b/rogue_chat_curses.py
@@ -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