def init_player(name):
        # -- Reading of the XML file
        tree = etree.parse("data/characters.xml").getroot()
        player_t = tree.xpath(name)[0]
        player_class = player_t.find('class').text.strip()
        race = player_t.find('race').text.strip()
        lvl = player_t.find('lvl')
        if lvl is None:
            # If lvl is not informed, default value is assumes to be 1
            lvl = 1
        else:
            lvl = int(lvl.text.strip())
        defense = int(player_t.find('initDef').text.strip())
        res = int(player_t.find('initRes').text.strip())
        hp = int(player_t.find('initHP').text.strip())
        strength = int(player_t.find('initStrength').text.strip())
        move = int(player_t.find('move').text.strip())
        sprite = 'imgs/dungeon_crawl/player/' + player_t.find(
            'sprite').text.strip()
        compl_sprite = player_t.find('complementSprite')
        if compl_sprite is not None:
            compl_sprite = 'imgs/dungeon_crawl/player/' + compl_sprite.text.strip(
            )

        equipment = player_t.find('equipment')
        equipments = []
        for eq in equipment.findall('*'):
            equipments.append(
                LoadFromXMLManager.parse_item_file(eq.text.strip()))
        gold = int(player_t.find('gold').text.strip())

        # Creating player instance
        player = Player(name,
                        sprite,
                        hp,
                        defense,
                        res,
                        move,
                        strength, [player_class],
                        equipments,
                        race,
                        gold,
                        lvl,
                        compl_sprite=compl_sprite)

        # Up stats according to current lvl
        player.stats_up(lvl - 1)
        # Restore hp due to lvl up
        player.healed()

        inventory = player_t.find('inventory')
        for it in inventory.findall('item'):
            item = LoadFromXMLManager.parse_item_file(it.text.strip())
            player.set_item(item)

        return player
Exemple #2
0
def load_player(name):
    # -- Reading of the XML file
    tree = etree.parse("data/characters.xml").getroot()
    player_t = tree.xpath(name)[0]
    player_class = player_t.find('class').text.strip()
    race = player_t.find('race').text.strip()
    lvl = player_t.find('level')
    if lvl is None:
        # If lvl is not informed, default value is assumes to be 1
        lvl = 1
    else:
        lvl = int(lvl.text.strip())
    defense = int(player_t.find('defense').text.strip())
    res = int(player_t.find('resistance').text.strip())
    hp = int(player_t.find('hp').text.strip())
    strength = int(player_t.find('strength').text.strip())
    sprite = 'imgs/' + player_t.find('sprite').text.strip()
    compl_sprite = player_t.find('complementSprite')
    if compl_sprite is not None:
        compl_sprite = 'imgs/dungeon_crawl/player/' + compl_sprite.text.strip()

    equipments = []
    for eq in player_t.findall('equipment/*'):
        equipments.append(parse_item_file(eq.text.strip()))
    gold = int(player_t.find('gold').text.strip())

    skills = Character.classes_data[player_class][
        'skills'] + Character.races_data[race]['skills']

    # Creating player instance
    player = Player(name,
                    sprite,
                    hp,
                    defense,
                    res,
                    strength, [player_class],
                    equipments,
                    race,
                    gold,
                    lvl,
                    skills,
                    compl_sprite=compl_sprite)

    # Up stats according to current lvl
    player.stats_up(lvl - 1)
    # Restore hp due to lvl up
    player.healed()

    inventory = player_t.find('inventory')
    if inventory is not None:
        for it in inventory.findall('item'):
            item = parse_item_file(it.text.strip())
            player.set_item(item)

    return player
def load_player(el, from_save):
    name = el.find("name").text.strip()
    level = el.find('level')
    if level is None:
        # If level is not specified, default value is 1
        level = 1
    else:
        level = int(level.text.strip())
    p_class = el.find("class").text.strip()
    race = el.find("race").text.strip()
    gold = int(el.find("gold").text.strip())
    exp = int(el.find("exp").text.strip()) if from_save else 0
    hp = int(el.find("hp").text.strip())
    strength = int(el.find("strength").text.strip())
    defense = int(el.find("defense").text.strip())
    res = int(el.find("resistance").text.strip())
    current_hp = int(el.find("current_hp").text.strip()) if from_save else hp
    inv = []
    for it in el.findall("inventory/item"):
        it_name = it.text.strip()
        item = parse_item_file(it_name)
        inv.append(item)

    equipments = []
    for eq in el.findall("equipment/*"):
        eq_name = eq.text.strip()
        eq = parse_item_file(eq_name)
        equipments.append(eq)

    if from_save:
        skills = [(load_skill(skill.text.strip()) if skill.text.strip()
                   not in skills_infos else skills_infos[skill.text.strip()])
                  for skill in el.findall('skills/skill/name')]
        tree = etree.parse("data/characters.xml").getroot()
        player_t = tree.xpath(name)[0]
    else:
        skills = Character.classes_data[p_class][
            'skills'] + Character.races_data[race]['skills']
        player_t = el

    # -- Reading of the XML file for default character's values (i.e. sprites)
    sprite = 'imgs/' + player_t.find('sprite').text.strip()
    compl_sprite = player_t.find('complement_sprite')
    if compl_sprite is not None:
        compl_sprite = 'imgs/' + compl_sprite.text.strip()

    p = Player(name,
               sprite,
               hp,
               defense,
               res,
               strength, [p_class],
               equipments,
               race,
               gold,
               level,
               skills,
               compl_sprite=compl_sprite)
    p.earn_xp(exp)
    p.items = inv
    p.hp = current_hp
    if from_save:
        pos = (int(el.find("position/x").text.strip()) * TILE_SIZE,
               int(el.find("position/y").text.strip()) * TILE_SIZE)
        p.pos = pos
        state = el.find("turnFinished").text.strip()
        if state == "True":
            p.end_turn()
    else:
        # Up stats according to current lvl
        p.stats_up(level - 1)
        # Restore hp due to lvl up
        p.healed()

    return p