home · contact · privacy
Add item-free-terrain view, and augment other views with control view.
authorChristian Heller <c.heller@plomlompom.de>
Wed, 25 Nov 2020 01:33:49 +0000 (02:33 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Wed, 25 Nov 2020 01:33:49 +0000 (02:33 +0100)
rogue_chat.html
rogue_chat_curses.py

index d865516eaad3d93054f99e7611cda281f1a85964..d24b9f6b8b94eaf290ad87f7562fb7b959646046 100644 (file)
@@ -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';
     }
index e95b0c84cc45e816bfe4b90c3bca17ccf07d94ec..67f63a1cd09dd9980f9783a5e737ce79f5f4ad39 100755 (executable)
@@ -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: