home · contact · privacy
Minor refactoring.
[plomrogue2-experiments] / new / example_client.py
index 54435460ab1411140fa9c1b011893e392980f6b7..1a7fe74bc501aa8ecfb6fbc780dbe37881a7dee8 100755 (executable)
@@ -90,11 +90,13 @@ def cmd_LAST_PLAYER_TASK_RESULT(game, msg):
         game.log(msg)
 cmd_LAST_PLAYER_TASK_RESULT.argtypes = 'string'
 
+
 def cmd_TURN_FINISHED(game, n):
     """Do nothing. (This may be extended later.)"""
     pass
 cmd_TURN_FINISHED.argtypes = 'int:nonneg'
 
+
 def cmd_TURN(game, n):
     """Set game.turn to n, empty game.things."""
     game.world.turn = n
@@ -102,24 +104,29 @@ def cmd_TURN(game, n):
     game.world.pickable_items = []
 cmd_TURN.argtypes = 'int:nonneg'
 
+
 def cmd_VISIBLE_MAP_LINE(game, y, terrain_line):
     game.world.map_.set_line(y, terrain_line)
 cmd_VISIBLE_MAP_LINE.argtypes = 'int:nonneg string'
 
+
 def cmd_GAME_STATE_COMPLETE(game):
     game.tui.to_update['turn'] = True
     game.tui.to_update['map'] = True
     game.tui.to_update['inventory'] = True
 
+
 def cmd_THING_TYPE(game, i, type_):
     t = game.world.get_thing(i)
     t.type_ = type_
 cmd_THING_TYPE.argtypes = 'int:nonneg string'
 
+
 def cmd_PLAYER_INVENTORY(game, ids):
     game.world.player_inventory = ids  # TODO: test whether valid IDs
 cmd_PLAYER_INVENTORY.argtypes = 'seq:int:nonneg'
 
+
 def cmd_PICKABLE_ITEMS(game, ids):
     game.world.pickable_items = ids
     game.tui.to_update['pickable_items'] = True
@@ -412,6 +419,8 @@ class MapWidget(Widget):
                     chars_with_attrs += [(c, curses.color_pair(2))]
                 elif c in {'x', 'X', '#'}:
                     chars_with_attrs += [(c, curses.color_pair(3))]
+                elif c == '?':
+                    chars_with_attrs += [(c, curses.color_pair(5))]
                 else:
                     chars_with_attrs += [c]
             return chars_with_attrs
@@ -508,7 +517,6 @@ class TUI:
             if new_examine_pos:
                 self.examiner_position = new_examine_pos
             self.to_update['map'] = True
-            self.to_update['descriptor'] = True
 
         def switch_to_pick_or_drop(target_widget):
             self.item_pointer = 0
@@ -584,10 +592,14 @@ class TUI:
             curses.init_pair(2, curses.COLOR_BLACK, curses.COLOR_GREEN)
             curses.init_pair(3, curses.COLOR_BLACK, curses.COLOR_BLUE)
             curses.init_pair(4, curses.COLOR_BLACK, curses.COLOR_YELLOW)
+            curses.init_pair(5, curses.COLOR_BLACK, curses.COLOR_WHITE)
 
+        # Basic curses initialization work.
         setup_screen(stdscr)
         curses.curs_set(False)  # hide cursor
         init_colors()
+
+        # With screen initialized, set up widgets with their curses windows.
         edit_widget = TextLineWidget('SEND:', self, (0, 0), (1, 20))
         edit_line_widget = EditWidget(self, (0, 6), (1, 14), ['edit'])
         edit_widget.children += [edit_line_widget]
@@ -595,7 +607,7 @@ class TUI:
         turn_widget.children += [TurnWidget(self, (2, 6), (1, 14), ['turn'])]
         log_widget = LogWidget(self, (4, 0), (None, 20), ['log'])
         descriptor_widget = DescriptorWidget(self, (4, 0), (None, 20),
-                                             ['descriptor'], False)
+                                             ['map'], False)
         map_widget = MapWidget(self, (0, 21), (None, None), ['map'])
         inventory_widget = InventoryWidget(self, (0, 21), (None, None),
                                            ['inventory'], False)
@@ -605,10 +617,12 @@ class TUI:
                        descriptor_widget, map_widget, inventory_widget,
                        pickable_items_widget]
         popup_widget = PopUpWidget(self, (0, 0), (1, 1), visible=False)
-        write_mode = False
+
+        # Ensure initial window state before loop starts.
         for w in top_widgets:
             w.ensure_freshness(True)
         self.socket.send('GET_GAMESTATE')
+        write_mode = False
         while True:
 
             # Draw screen.