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