X-Git-Url: https://plomlompom.com/repos/todo?a=blobdiff_plain;f=rogue_chat_curses.py;h=3a5950c477372c2cf44510bde9c6e8e6a0d4370b;hb=3ac4bfc7722ec4366698ae17f5e2006e6a9e8b30;hp=db5f9933640aa92081b0797ed5d7518ab9aee4dd;hpb=c99f3476d21b7416d584c33bfe3b1010ada523e2;p=plomrogue2 diff --git a/rogue_chat_curses.py b/rogue_chat_curses.py index db5f993..3a5950c 100755 --- a/rogue_chat_curses.py +++ b/rogue_chat_curses.py @@ -625,14 +625,27 @@ class TUI: elif self.mode.name == 'take_thing': self.log_msg('selectable things:') player = self.game.get_thing(self.game.player_id) - selectables = [t for t in self.game.things - if t != player and t.type_ != 'Player' - and t.position == player.position] - if len(selectables) == 0: + select_range = [player.position, + player.position + YX(0,-1), + player.position + YX(0, 1), + player.position + YX(-1, 0), + player.position + YX(1, 0)] + if type(self.game.map_geometry) == MapGeometryHex: + if player.position.y % 2: + select_range += [player.position + YX(-1, 1), + player.position + YX(1, 1)] + else: + select_range += [player.position + YX(-1, -1), + player.position + YX(1, -1)] + self.selectables = [t for t in self.game.things + if t != player and t.type_ != 'Player' + and t.position in select_range] + if len(self.selectables) == 0: self.log_msg('none') else: - for t in selectables: - self.log_msg(str(t.id_) + ' ' + self.get_thing_info(t)) + for i in range(len(self.selectables)): + t = self.selectables[i] + self.log_msg(str(i) + ': ' + self.get_thing_info(t)) elif self.mode.name == 'command_thing': self.send('TASK:COMMAND ' + quote('HELP')) elif self.mode.name == 'control_pw_pw': @@ -1013,7 +1026,14 @@ class TUI: if self.input_ == '': self.log_msg('@ aborted') else: - self.send('TASK:PICK_UP ' + quote(self.input_)) + try: + i = int(self.input_) + if i < 0 or i >= len(self.selectables): + self.log_msg('? invalid index, aborted') + else: + self.send('TASK:PICK_UP %s' % self.selectables[i].id_) + except ValueError: + self.log_msg('? invalid index, aborted') self.input_ = '' self.switch_mode('play') elif self.mode.name == 'command_thing' and key == '\n':