def setup_skill_icons_using( self, ui_prepare_character ) : skills= ( get_skill( skill_id ) for skill_id in ui_prepare_character.character_data[u'skills_using'] ) skills= filter( lambda skill : skill is not None, skills ) len_need= len( skills ) resize( ui_prepare_character.skill_icons_using, len_need, Factory.UIPrepareSkillIcon ) for ui_icon, skill in izip( reversed( ui_prepare_character.skill_icons_using.children ), skills ) : ui_icon.source= skill.icon
def character_on_select( self, ui_prepare_character ) : for child in self.character_list.children : if child == ui_prepare_character : child.is_selected= True else : child.is_selected= False self.selected_character_image= ui_prepare_character.image self.selected_character_name= ui_prepare_character.name self.selected_character_hp_max_value= ui_prepare_character.character_data[u'hp_max'] self.selected_character_speed_value= ui_prepare_character.character_data[u'speed'] self.selected_character_dex_value= ui_prepare_character.character_data[u'dex'] self.selected_character_skill_points= ui_prepare_character.character_data[u'skill_points'] self.update_selected_character_skill_value_total() skills= ( ( skill_id, get_skill( skill_id ), skill_id in ui_prepare_character.character_data[u'skills_using'] ) for skill_id in ui_prepare_character.character_data[u'skill_ids'] ) skills= filter( lambda ( skill_id, skill, is_active ) : skill is not None, skills ) skills.sort( key= lambda ( skill_id, skill, is_active ) : 1 if is_active else 0 ) def create_ui_prepare_skill() : ui_prepare_skill= Factory.UIPrepareSkill() ui_prepare_skill.ui_combat_prepare= self ui_prepare_skill.skill_id= 0 ui_prepare_skill.character_data= None return ui_prepare_skill resize( self.selected_character_skill_list, len( skills ), create_ui_prepare_skill ) assert( len( self.selected_character_skill_list.children ) == len( skills ) ) for ui_prepare_skill, ( skill_id, skill, is_active ) in izip( self.selected_character_skill_list.children, skills ) : ui_prepare_skill.is_active= is_active ui_prepare_skill.icon= skill.icon ui_prepare_skill.name= skill.name ui_prepare_skill.value= skill.value ui_prepare_skill.skill_id= skill_id ui_prepare_skill.character_data= ui_prepare_character.character_data
def data2character( character, data ) : _set_value( character, u'name', data, u'name' ) cooldown= data.get( u'cooldown', None ) if cooldown is not None : for cd_id, ( time_total, time_left ) in cooldown.iteritems() : character.cooldown.set_cd( cd_id, time_total, time_left ) skill_ids= data.get( u'skill_ids', None ) if skill_ids is not None : for skill_id in skill_ids : skill= get_skill( skill_id ) if skill is None : continue character.id2skill[skill_id]= skill _set_value( character, u'image', data, u'image' ) _set_value( character, u'auto_control', data, u'auto_control' ) _set_value( character, u'camp', data, u'camp' ) skills_using= data.get( u'skills_using', None ) if skills_using is not None : character.skills_using.extend( skills_using ) _set_value( character, u'hp', data, u'hp' ) _set_value( character, u'hp_max', data, u'hp_max' ) _set_value( character, u'speed', data, u'speed' ) _set_value( character, u'dex', data, u'dex' ) character.hp= character.hp
def view_skill( self, ui_prepare_skill ) : skill= get_skill( ui_prepare_skill.skill_id ) if skill is None : return ui_skill_desc= Factory.UISkillDesc() ui_skill_desc.icon= skill.icon ui_skill_desc.name= skill.name ui_skill_desc.desc= skill.desc ui_skill_desc.open()
def update_skill_value_total( self ) : value_total= 0 for ui_prepare_character in self.character_list.children : if ui_prepare_character.is_goto_battle : for skill_id in ui_prepare_character.character_data[u'skills_using'] : skill= get_skill( skill_id ) if skill is None : continue value_total += skill.value self.skill_value_total= value_total
def is_player_combat_ready( self ) : goto_battle_count= 0 skill_value_total= 0 skill_value_total_max= 0 for character_data in self.player_data[u'characters'] : if character_data[u'goto_battle'] : goto_battle_count += 1 skill_value_total_max += character_data[u'skill_points'] for skill_id in character_data[u'skills_using'] : skill= get_skill( skill_id ) if skill is not None : skill_value_total += skill.value if not 0 < goto_battle_count <= datas.goto_battle_count_max : return False if skill_value_total > skill_value_total_max : return False return True