Ejemplo n.º 1
0
class CreateCharacter:
  def __init__(self, state):
    self.state = state
    self.menu = Menu()
    self.player_class = None
    self.player_race = None
    self.caster_component = None
    self.fighter_component = None
    self.choose_race()
    self.choose_class()
    self.get_caster_component()
    self.get_fighter_component()
    self.state.player = Object(0, 0, '@', Constants.PLAYER, libtcod.white, blocks=True, fighter=self.fighter_component,
                               caster=self.caster_component)
    self.state.player.level = 1
    self.state.player_inventory = Inventory(self.state)
    self.state.player_spell_inventory = SpellInventory(self.state)
    self.get_starting_equipment()

  def choose_class(self):
    while (self.player_class == None):
      self.player_class = self.menu.display_menu_return_item('Choose a class:',
                                                             [Constants.WARRIOR, Constants.MAGE, Constants.ARCHER], 30,
                                                             self.state.con,
                                                             override_height=MapConstants.MENU_HEIGHT_ADDITION)
    self.state.player_class = self.player_class

  def choose_race(self):
    while (self.player_race == None):
      self.player_race = self.menu.display_menu_return_item('Choose a race:',
                                                            [Constants.ELF, Constants.HUMAN, Constants.DWARF], 30,
                                                            self.state.con,
                                                            override_height=MapConstants.MENU_HEIGHT_ADDITION)
    self.state.player_race = self.player_race

  def get_caster_component(self):
    self.caster_component = getattr(eval(self.player_class), 'get_caster_component')()

  def get_fighter_component(self):
    self.fighter_component = getattr(eval(self.player_race), 'get_fighter_component')()

  # TODO Make this fit the class / race better
  def get_starting_equipment(self):
    equipment_component = self.state.equipment.get_data_object(EquipmentConstants.DAGGER)
    item = equipment_component.create_at_location(0, 0)
    self.state.player_inventory.inventory.append(item)
    equipment_component.equip(self.state)