- elif key == 't':
- if not popup_widget.visible:
- self.to_update['popup'] = True
- popup_widget.visible = True
- popup_widget.reconfigure()
- draw_popup_if_visible = True
- else:
- popup_widget.visible = False
- for w in top_widgets:
- w.ensure_freshness(True)
- elif key == 'p':
- self.socket.send('GET_PICKABLE_ITEMS')
- self.item_pointer = 0
- self.view = 'pickable_items'
- elif key == 'i':
- self.item_pointer = 0
- self.view = 'inventory'
- self.to_update['map'] = True
- elif self.view == 'pickable_items':
- if len(self.game.world.pickable_items) < self.item_pointer + 1\
- and self.item_pointer > 0:
- self.item_pointer = len(self.game.world.pickable_items) - 1
- while len(self.game.world.pickable_items) <= self.item_pointer:
- self.item_pointer -= 1
- if key == 'c':
- self.view = 'map'
- elif key == 'j':
- self.item_pointer += 1
- elif key == 'k' and self.item_pointer > 0:
- self.item_pointer -= 1
- elif key == 'p' and \
- len(self.game.world.pickable_items) > 0:
- id_ = self.game.world.pickable_items[self.item_pointer]
- self.socket.send('TASK:PICKUP %s' % id_)
- self.socket.send('GET_PICKABLE_ITEMS')
- if self.item_pointer > 0:
- self.item_pointer -= 1
- else:
- continue
- self.to_update['map'] = True
- elif self.view == 'inventory':
- if len(self.game.world.player_inventory) < self.item_pointer + 1\
- and self.item_pointer > 0:
- self.item_pointer = len(self.game.world.player_inventory) - 1
- if key == 'c':
- self.view = 'map'
- elif key == 'j':
- self.item_pointer += 1
- elif key == 'k' and self.item_pointer > 0:
- self.item_pointer -= 1
- elif key == 'd' and \
- len(self.game.world.player_inventory) > 0:
- id_ = self.game.world.player_inventory[self.item_pointer]
- self.socket.send('TASK:DROP %s' % id_)
- if self.item_pointer > 0:
- self.item_pointer -= 1
- else:
- continue
- self.to_update['map'] = True
+ elif pickable_items_widget.visible:
+ pick_or_drop_menu('p', pickable_items_widget,
+ self.game.world.pickable_items,
+ 'PICKUP', 'GET_PICKABLE_ITEMS')
+ elif inventory_widget.visible:
+ pick_or_drop_menu('d', inventory_widget,
+ self.game.world.player_inventory,
+ 'DROP')