- else:
- if len(key) == 1 and key in ASCII_printable and \
- len(self.to_send) < len(self.edit):
- self.to_send += [key]
- self.to_update['edit'] = True
- elif key == 'KEY_BACKSPACE':
- self.to_send[:] = self.to_send[:-1]
- self.to_update['edit'] = True
- elif key == '\n': # Return key
- self.socket.send(''.join(self.to_send))
- self.to_send[:] = []
- self.to_update['edit'] = True
+ 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