home · contact · privacy
Add crates.
[plomrogue2] / rogue_chat_curses.py
index c26c3805a0ec092c6e4ff8affead14a222c7127f..ec9eee5b276b1373a77588b2cfc01a78e1625545 100755 (executable)
@@ -174,7 +174,6 @@ class PlomSocketClient(PlomSocket):
             pass  # we assume socket will be known as dead by now
 
 def cmd_TURN(game, n):
-    game.turn = n
     game.turn_complete = False
 cmd_TURN.argtypes = 'int:nonneg'
 
@@ -256,14 +255,14 @@ def cmd_MAP(game, geometry, size, content):
     map_geometry_class = globals()['MapGeometry' + geometry]
     game.map_geometry_new = map_geometry_class(size)
     game.map_content_new = content
-    if type(game.map_geometry) == MapGeometrySquare:
+    if type(game.map_geometry_new) == MapGeometrySquare:
         game.tui.movement_keys = {
             game.tui.keys['square_move_up']: 'UP',
             game.tui.keys['square_move_left']: 'LEFT',
             game.tui.keys['square_move_down']: 'DOWN',
             game.tui.keys['square_move_right']: 'RIGHT',
         }
-    elif type(game.map_geometry) == MapGeometryHex:
+    elif type(game.map_geometry_new) == MapGeometryHex:
         game.tui.movement_keys = {
             game.tui.keys['hex_move_upleft']: 'UPLEFT',
             game.tui.keys['hex_move_upright']: 'UPRIGHT',
@@ -294,6 +293,8 @@ def cmd_GAME_STATE_COMPLETE(game):
     game.map_control_content = game.map_control_content_new
     game.player = game.get_thing(game.player_id)
     game.players_hat_chars = game.players_hat_chars_new
+    game.bladder_pressure = game.bladder_pressure_new
+    game.weariness = game.weariness_new
     game.turn_complete = True
     if game.tui.mode.name == 'post_login_wait':
         game.tui.switch_mode('play')
@@ -361,6 +362,11 @@ def cmd_RANDOM_COLORS(game):
     game.tui.set_random_colors()
 cmd_RANDOM_COLORS.argtypes = ''
 
+def cmd_STATS(game, bladder_pressure, weariness):
+    game.bladder_pressure_new = bladder_pressure
+    game.weariness_new = weariness
+cmd_STATS.argtypes = 'int:nonneg int:nonneg'
+
 class Game(GameBase):
     turn_complete = False
     tasks = {}
@@ -400,6 +406,7 @@ class Game(GameBase):
         self.register_command(cmd_FOV)
         self.register_command(cmd_DEFAULT_COLORS)
         self.register_command(cmd_RANDOM_COLORS)
+        self.register_command(cmd_STATS)
         self.map_content = ''
         self.players_hat_chars = ''
         self.player_id = -1
@@ -724,26 +731,41 @@ class TUI:
                 self.log_msg('@ enter username')
         elif self.mode.name == 'take_thing':
             self.log_msg('Portable things in reach for pick-up:')
-            select_range = [self.game.player.position,
-                            self.game.player.position + YX(0,-1),
-                            self.game.player.position + YX(0, 1),
-                            self.game.player.position + YX(-1, 0),
-                            self.game.player.position + YX(1, 0)]
-            if type(self.game.map_geometry) == MapGeometryHex:
+            directed_moves = {
+                'HERE': YX(0, 0), 'LEFT': YX(0, -1), 'RIGHT': YX(0, 1)
+            }
+            if type(self.game.map_geometry) == MapGeometrySquare:
+                directed_moves['UP'] = YX(-1, 0)
+                directed_moves['DOWN'] = YX(1, 0)
+            elif type(self.game.map_geometry) == MapGeometryHex:
                 if self.game.player.position.y % 2:
-                    select_range += [self.game.player.position + YX(-1, 1),
-                                     self.game.player.position + YX(1, 1)]
+                    directed_moves['UPLEFT'] = YX(-1, 0)
+                    directed_moves['UPRIGHT'] = YX(-1, 1)
+                    directed_moves['DOWNLEFT'] = YX(1, 0)
+                    directed_moves['DOWNRIGHT'] = YX(1, 1)
                 else:
-                    select_range += [self.game.player.position + YX(-1, -1),
-                                     self.game.player.position + YX(1, -1)]
-            self.selectables = [t.id_ for t in self.game.things
-                                if t.portable and t.position in select_range]
+                    directed_moves['UPLEFT'] = YX(-1, -1)
+                    directed_moves['UPRIGHT'] = YX(-1, 0)
+                    directed_moves['DOWNLEFT'] = YX(1, -1)
+                    directed_moves['DOWNRIGHT'] = YX(1, 0)
+            select_range = {}
+            for direction in directed_moves:
+                move = directed_moves[direction]
+                select_range[direction] = self.game.player.position + move
+            self.selectables = []
+            directions = []
+            for direction in select_range:
+                for t in [t for t in self.game.things
+                          if t.portable and t.position == select_range[direction]]:
+                    self.selectables += [t.id_]
+                    directions += [direction]
             if len(self.selectables) == 0:
                 return fail('nothing to pick-up')
             else:
                 for i in range(len(self.selectables)):
                     t = self.game.get_thing(self.selectables[i])
-                    self.log_msg(str(i) + ': ' + self.get_thing_info(t))
+                    self.log_msg('%s %s: %s' % (i, directions[i],
+                                                self.get_thing_info(t)))
         elif self.mode.name == 'drop_thing':
             self.log_msg('Direction to drop thing to:')
             self.selectables =\
@@ -921,10 +943,10 @@ class TUI:
                 safe_addstr(y, self.window_width, self.input_lines[i])
                 y += 1
 
-        def draw_turn():
-            if not self.game.turn_complete:
-                return
-            safe_addstr(0, self.window_width, 'TURN: ' + str(self.game.turn))
+        def draw_stats():
+            stats = 'WEARY: %s BLADDER: %s' % (self.game.weariness,
+                                               self.game.bladder_pressure)
+            safe_addstr(0, self.window_width, stats)
 
         def draw_mode():
             help = "hit [%s] for help" % self.keys['help']
@@ -1072,7 +1094,7 @@ class TUI:
                 draw_history()
             draw_mode()
             if not self.mode.is_intro:
-                draw_turn()
+                draw_stats()
                 draw_map()
             if self.show_help:
                 draw_help()