From: Christian Heller <c.heller@plomlompom.de> Date: Wed, 25 Nov 2020 01:33:49 +0000 (+0100) Subject: Add item-free-terrain view, and augment other views with control view. X-Git-Url: https://plomlompom.com/repos/%7B%7Bdb.prefix%7D%7D/static/%7B%7B%20web_path%20%7D%7D/balance?a=commitdiff_plain;h=c0d6e23c363b9cf91a3a028305a1b01440454d7d;p=plomrogue2 Add item-free-terrain view, and augment other views with control view. --- diff --git a/rogue_chat.html b/rogue_chat.html index d865516..d24b9f6 100644 --- a/rogue_chat.html +++ b/rogue_chat.html @@ -44,7 +44,7 @@ terminal columns: <input id="n_cols" type="number" step=4 min=80 value=80 /> </tr> <tr> <td><button id="switch_to_study">study mode</button></td> - <td><button id="toggle_map_mode">toggle terrain/annotations/control view</button> + <td><button id="toggle_map_mode">toggle everything/terrain/annotations view</button> </tr> <tr> <td><button id="switch_to_play">play mode</button></td> @@ -101,7 +101,7 @@ terminal columns: <input id="n_cols" type="number" step=4 min=80 value=80 /> <li><input id="key_switch_to_control_tile_type" type="text" value="Q" /> <li><input id="key_switch_to_annotate" type="text" value="M" /> <li><input id="key_switch_to_portal" type="text" value="T" /> -<li>toggle terrain/annotations/control view: <input id="key_toggle_map_mode" type="text" value="M" /> +<li>toggle everything/terrain/annotations view: <input id="key_toggle_map_mode" type="text" value="M" /> </ul> </div> <script> @@ -559,7 +559,7 @@ let tui = { this.mode_admin.available_modes = ["control_pw_type", "control_tile_type", "chat", "study", "play", "edit"] - this.mode_control_tile_draw.available_modes = ["admin"] + this.mode_control_tile_draw.available_modes = ["admin_enter"] this.mode_edit.available_modes = ["write", "annotate", "portal", "password", "chat", "study", "play", "admin_enter"] @@ -608,7 +608,7 @@ let tui = { }, switch_mode: function(mode_name) { this.inputEl.focus(); - this.map_mode = 'terrain'; + this.map_mode = 'all'; if (mode_name == 'admin_enter' && this.is_admin) { mode_name = 'admin'; }; @@ -794,24 +794,25 @@ let tui = { draw_map: function() { let map_lines_split = []; let line = []; - let map_content = game.map; - if (this.map_mode == 'control') { - map_content = game.map_control; - } for (let i = 0, j = 0; i < game.map.length; i++, j++) { if (j == game.map_size[1]) { map_lines_split.push(line); line = []; j = 0; }; - line.push(map_content[i] + ' '); + if (['edit', 'write', 'control_tile_draw', + 'control_tile_type'].includes(this.mode.name)) { + line.push(game.map[i] + game.map_control[i]); + } else { + line.push(game.map[i] + ' '); + } }; map_lines_split.push(line); if (this.map_mode == 'annotations') { for (const coordinate of explorer.info_hints) { map_lines_split[coordinate[0]][coordinate[1]] = 'A '; } - } else if (this.map_mode == 'terrain') { + } else if (this.map_mode == 'all') { for (const p in game.portals) { let coordinate = p.split(',') let original = map_lines_split[coordinate[0]][coordinate[1]]; @@ -1280,7 +1281,7 @@ tui.inputEl.addEventListener('keydown', (event) => { if (tui.map_mode == 'terrain') { tui.map_mode = 'annotations'; } else if (tui.map_mode == 'annotations') { - tui.map_mode = 'control'; + tui.map_mode = 'all'; } else { tui.map_mode = 'terrain'; } @@ -1358,7 +1359,7 @@ 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 = 'control'; + tui.map_mode = 'all'; } else { tui.map_mode = 'terrain'; } diff --git a/rogue_chat_curses.py b/rogue_chat_curses.py index e95b0c8..67f63a1 100755 --- a/rogue_chat_curses.py +++ b/rogue_chat_curses.py @@ -374,7 +374,7 @@ class TUI: self.mode_admin.available_modes = ["control_pw_type", "control_tile_type", "chat", "study", "play", "edit"] - self.mode_control_tile_draw.available_modes = ["admin"] + self.mode_control_tile_draw.available_modes = ["admin_enter"] self.mode_edit.available_modes = ["write", "annotate", "portal", "password", "chat", "study", "play", "admin_enter"] @@ -386,7 +386,7 @@ class TUI: self.do_refresh = True self.queue = queue.Queue() self.login_name = None - self.map_mode = 'terrain' + self.map_mode = 'all' self.password = 'foo' self.switch_mode('waiting_for_server') self.keys = { @@ -502,7 +502,7 @@ class TUI: (self.explorer, quote(self.tile_control_char))) def switch_mode(self, mode_name): - self.map_mode = 'terrain' + self.map_mode = 'all' if mode_name == 'admin_enter' and self.is_admin: mode_name = 'admin' self.mode = getattr(self, 'mode_' + mode_name) @@ -662,17 +662,23 @@ class TUI: if not self.game.turn_complete: return map_lines_split = [] - map_content = self.game.map_content - if self.map_mode == 'control': - map_content = self.game.map_control_content for y in range(self.game.map_geometry.size.y): start = self.game.map_geometry.size.x * y end = start + self.game.map_geometry.size.x - map_lines_split += [[c + ' ' for c in map_content[start:end]]] + if self.mode.name in {'edit', 'write', 'control_tile_draw', + 'control_tile_type'}: + line = [] + for i in range(start, end): + line += [self.game.map_content[i] + + self.game.map_control_content[i]] + map_lines_split += [line] + else: + map_lines_split += [[c + ' ' for c + in self.game.map_content[start:end]]] if self.map_mode == 'annotations': for p in self.game.info_hints: map_lines_split[p.y][p.x] = 'A ' - elif self.map_mode == 'terrain': + elif self.map_mode == 'all': for p in self.game.portals.keys(): original = map_lines_split[p.y][p.x] map_lines_split[p.y][p.x] = original[0] + 'P' @@ -733,7 +739,7 @@ class TUI: elif self.mode.name == 'study': content += 'Available actions:\n' content += '[%s] â move question mark\n' % ','.join(self.movement_keys) - content += '[%s] â toggle view between terrain, annotations, and password protection areas\n' % self.keys['toggle_map_mode'] + content += '[%s] â toggle view between anything, terrain, and annotations\n' % self.keys['toggle_map_mode'] content += '\n' elif self.mode.name == 'edit': content += "Available actions:\n" @@ -895,7 +901,7 @@ class TUI: if self.map_mode == 'terrain': self.map_mode = 'annotations' elif self.map_mode == 'annotations': - self.map_mode = 'control' + self.map_mode = 'all' else: self.map_mode = 'terrain' elif key in self.movement_keys: