Beispiel #1
0
class Controller(object):
    """description of class"""
    def __init__(self):
        self.prefs = Preferences()
        self.db = SQLController()
        self.load_skill_bp_into_prefs()
        self.__ui_components = {}
        self.__pc_roster = {}
        self.__skill_shorts = {}
        pc_filepaths = []
        #pc_filepaths.append('preferences/Rasmus_Shawn Everette Slow Curve Manning.xml')
        pc_filepaths.append('preferences/Rasmus_Shawn Everette Slow Curve Manning.xml')
        self.load_pc_roster(pc_filepaths)
        #print(str(self.__pc_roster['Toni']))

        self.prepare_skill_shorts()

        weapons = self.prefs.transfer_wpns_from_txt_to_sql()
        wpn_table=self.db.table('wpn_blueprints')

        skills = self.prefs.get_skills_dictionary()
        skill_bp_table = self.db.table('skill_blueprints')
        #self.__wpn_db = WeaponSqlController()
        self.add_skills_bp_to_db(skills, skill_bp_table)
        
        #print(weapons)
        for weapon in weapons:
            name = str(weapon.get_attribute('name'))
            type = str(weapon.get_attribute('type'))
            wa = str(weapon.get_attribute('wa'))
            con = str(weapon.get_attribute('con'))
            av = str(weapon.get_attribute('av'))
            dmg = str(weapon.get_attribute('dmg'))
            ammo = str(weapon.get_attribute('ammo'))
            shts = str(weapon.get_attribute('shts'))
            rof = str(weapon.get_attribute('rof'))
            rel = str(weapon.get_attribute('rel'))
            range = str(weapon.get_attribute('range'))
            cost = str(weapon.get_attribute('cost'))
            source = str(weapon.get_attribute('source'))
            category = str(weapon.get_attribute('category'))
            wpn_table.add_wpn(name, type, wa, con, av, dmg, ammo, shts, rof, rel, range, cost, category=category, source=source)
        #wpn_table.print_table()
            

        
       

        self.load_character('preferences/Rasmus_Shawn Everette Slow Curve Manning.xml')
        self.db.add_character_to_database(self.c)
        start = StartMenu(self)
        #start = SkillShortsInspector(controller=self)
    def add_skills_bp_to_db(self, skill_list, skill_table):
        for key, value in skill_list.items():
            name = value.get_attribute('name')
            stat = value.get_attribute('stat')
            short = value.get_attribute('short')
            diff = value.get_attribute('diff')
            category = value.get_attribute('category')
            description = value.get_attribute('description')
            chip = value.get_attribute('ischippable')
            
            skill_table.add(name, stat, short, diff, category, chip, description) 
    def load_pc_roster(self, filepath_table):
        for path in filepath_table:
            c = Character(self.prefs)
            self.prefs.load_character(path, c)
            player = c.get_attribute('player')
            self.__pc_roster[player] = c
            #print(str(c))

    def load_wpn_sql_table(self):
        wpn = self.db.table('wpn_blueprints')
        return wpn.query_all()

    def load_single_sql_wpn(self, name):
        wpn = self.db.table('wpn_blueprints')
        return wpn.search_with_name(name)

    def update_sql_wpn(self, name, type, wa, con, av, dmg, ammo, shts, rof, rel, range, cost, weight, flags, options, alt_munitions, description, category):
        wpn_table = self.db.table('wpn_blueprints')
        wpn_table.update_wpn(name, type, wa, con, av, dmg, ammo, shts, rof, rel, range, cost, weight, flags, options, alt_munitions, description, category)

    def prepare_skill_shorts(self):
        skills = self.prefs.get_skills_dictionary()

        for key, value in skills.items():
            try:
                short = value.get_attribute('short')
                name = value.get_attribute('name')
                self.__skill_shorts[short] = name
            except Exception:
                pass
    def get_skill_from_short(self, short):
        try:
            skill = self.__skill_shorts[short]
            return skill
        except Exception:
            return 'error'

    def get_pc_roster(self):
        return self.__pc_roster

    def load_character(self, filepath):
        self.c = Character(self.prefs)
        self.prefs.load_character(filepath,self.c)

    def get_player_fuz_roll(self, player, detailed=False):
        
        search_for = str.strip(player)
        return self.__pc_roster[search_for].fuz_roll(detailed)
    
    def set_char_stat(self, command, value):
        self.c.set(command, value) 
    
    def destroy_char_attributes_of_type(self, type, attribute):
        self.c.remove_all_attributes_of_type(type, attribute)

    def add_skill_to_char(self, name, lvl, ip, chipped):
        self.c.add_skill(name, lvl, ip=ip, chipped=chipped)
    
    def get_slate_gameobject(self):
        o = GameObject()
        return o   
        
    def get_char_stat(self, name, attribute, search_category=False, return_all=False):
        if search_category:
            return self.c.get_stat(name, name, True, return_all)
        return self.c.get_stat(name, attribute)
    
    def get_char_attribute(self, name):
        return self.c.get_attribute(name)

    def get_char_stat_list(self, stat_type):
        return self.c.get_stat_list(stat_type)

    def get_char_inventory(self):
        return self.c.get_inventory()

    def get_char_bp_points(self, player, skill, detailed=False):
        character = self.__pc_roster[player]
        array = []
        if detailed:
            source_stat_name = character.get_stat(skill, 'stat')
            source_stat_lvl = character.get_stat(source_stat_name, 'lvl')
            skill_lvl = character.get_stat(skill, 'lvl')
            array.append(source_stat_lvl)
            array.append(skill_lvl)
            return array
        
        bp = character.get_bpoints(skill)
        return bp
        

    def add_ui_component(self, comp_name, component):
        self.__ui_components[comp_name] = component

    def save_to_xml(self, root_name, childname, values_dict, filepath):
        x = XmlController()
        x.create_root(root_name)
        for key, value in values_dict.items():
            x.create_sub_element(childname, 'root')
            x.set_text(value, childname)
            x.set_value('type',key, childname)

        x.save_file(filepath)

    def load_from_xml(self, filename, root_name):
        x = XmlController()
        x.load_file(filename)
        return x.get_dataset(root_name, True, dict_tag_name='type')

    def calc_dv_probabilities(self, bp, dv):
        percent = self.prefs.get_probability(bp, dv)
        return percent

    def load_skill_bp_into_prefs(self):
        skill_table = self.db.table('skill_blueprints')
        skills = skill_table.query_all()
        for skill in skills:
            self.prefs.set_skill_blueprint(skill.name, skill.stat, skill.category, skill.description, skill.chip, skill.diff, skill.short)

    def update_skill_bp_to_db(self):
        skill_table = self.db.table('skill_blueprints')

        for key, value in self.prefs.get_skills_dictionary().items():
            name = value.get_attribute('name')
            stat = value.get_attribute('stat')
            short = value.get_attribute('short')
            diff = value.get_attribute('diff')
            category = value.get_attribute('category')
            description = value.get_attribute('description')
            chip = value.get_attribute('ischippable')

            skill_table.update(name, stat, short, diff, category, chip, description)
    
    def get_all_skill_blueprints(self):
        skills_table = self.db.table('skill_blueprints')
        return skills_table.query_all()