Esempio n. 1
0
def build_units(class_dict, portrait_data):
    units = []
    for unit in GC.UNITDATA.getroot().findall('unit'):
        u_i = {}
        u_i['id'] = unit.find('id').text
        u_i['name'] = unit.get('name')

        classes = unit.find('class').text.split(',')
        u_i['klass'] = classes[-1]

        u_i['gender'] = unit.find('gender').text
        u_i['level'] = int(unit.find('level').text)
        u_i['faction'] = unit.find('faction').text

        stats = SaveLoad.intify_comma_list(unit.find('bases').text)
        for n in xrange(len(stats), cf.CONSTANTS['num_stats']):
            stats.append(class_dict[u_i['klass']]['bases'][n])
        assert len(stats) == cf.CONSTANTS[
            'num_stats'], "bases %s must be exactly %s integers long" % (
                stats, cf.CONSTANTS['num_stats'])
        u_i['stats'] = SaveLoad.build_stat_dict(stats)
        # print("%s's stats: %s", u_i['name'], u_i['stats'])

        u_i['growths'] = SaveLoad.intify_comma_list(unit.find('growths').text)
        u_i['growths'].extend(
            [0] * (cf.CONSTANTS['num_stats'] - len(u_i['growths'])))
        assert len(u_i['growths']) == cf.CONSTANTS[
            'num_stats'], "growths %s must be exactly %s integers long" % (
                stats, cf.CONSTANTS['num_stats'])

        u_i['items'] = ItemMethods.itemparser(unit.find('inventory').text)
        # Parse wexp
        u_i['wexp'] = unit.find('wexp').text.split(',')
        for index, wexp in enumerate(u_i['wexp'][:]):
            if wexp in CustomObjects.WEAPON_EXP.wexp_dict:
                u_i['wexp'][index] = CustomObjects.WEAPON_EXP.wexp_dict[wexp]
        u_i['wexp'] = [int(num) for num in u_i['wexp']]

        assert len(u_i['wexp']) == len(
            CustomObjects.WEAPON_TRIANGLE.types
        ), "%s's wexp must have as many slots as there are weapon types." % (
            u_i['name'])

        u_i['desc'] = unit.find('desc').text
        # Tags
        u_i['tags'] = set(unit.find('tags').text.split(
            ',')) if unit.find('tags') is not None and unit.find(
                'tags').text is not None else set()

        # Personal Skills
        personal_skills = unit.find('skills').text.split(
            ',') if unit.find('skills') is not None and unit.find(
                'skills').text is not None else []
        u_i['skills'] = [
            StatusObject.statusparser(status) for status in personal_skills
        ]

        units.append(Unit(u_i, portrait_data))
    return units
Esempio n. 2
0
 def __init__(self):
     self.id = 0
     self.name = ''
     self.level = 1
     self.gender = 0
     self.faction = ''
     self.klass = 'Citizen'
     self.tags = set()
     self.desc = ''
     self.stats = SaveLoad.build_stat_dict(class_dict[self.klass]['bases'])
     self.growths = [0 for n in xrange(cf.CONSTANTS['num_stats'])]
     self.items = []
     self.skills = []
     self.wexp = [
         0 for n in xrange(len(CustomObjects.WEAPON_TRIANGLE.types))
     ]
     self.team = 'player'