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 sync( self ) : self.sync_selected_skill_info() show_empty= ( self.active_character is None or \ self.active_character.camp != self.self_camp or \ not isinstance( self.active_character.controller, CommandController ) or \ self.active_character.controller.actions ) if self.selected_detail.current == u'empty' and not show_empty : self.selected_detail.current= u'skills' elif self.selected_detail.current != u'empty' and show_empty : self.selected_detail.current= u'empty' if self.selected_detail.current == u'skills' : skill_src= self.active_character skills= [ ( skill_id, skill_src.get_skill( skill_id ) ) for skill_id in skill_src.skills_using ] skills= filter( lambda ( skill_id, skill ) : skill is not None, skills ) skills.sort( reverse= True, key= lambda ( skill_id, skill ) : skill_id ) len_need= len( skills ) def create_ui_skill_menu_item() : ui_skill_menu_item= Factory.UISkillMenuItem() ui_skill_menu_item.ui_combat= self ui_skill_menu_item.skill_src= None ui_skill_menu_item.skill_id= None return ui_skill_menu_item resize( self.ui_skills, len_need, create_ui_skill_menu_item ) for i in xrange( len_need ) : skill_id, skill= skills[i] ui_skill_item= self.ui_skills.children[i] ui_skill_item.skill_name= skill.name ui_skill_item.skill_src= skill_src ui_skill_item.skill_id= skill_id ui_skill_item.is_valid= skill.valid( self.combat, self.combat.objects, skill_src ) ui_skill_item.icon= skill.icon self.__update_valid_ui_targets() self.__sync_characters( self.self_character_list, self.self_camp ) self.__sync_characters( self.enemy_character_list, self.enemy_camp ) self.light_name= get_property( u'light' ).__doc__ self.light_value= self.combat.light self.light_max= self.combat.light_max self.dark_name= get_property( u'dark' ).__doc__ self.dark_value= self.combat.dark self.dark_max= self.combat.dark_max self.chaos_name= get_property( u'chaos' ).__doc__ self.chaos_value= self.combat.chaos self.chaos_max= self.combat.chaos_max
def __sync_characters( self, ui_character_list, camp ) : characters= [ character for character in self.combat.objects if character.camp == camp ] characters.sort() len_need= len( characters ) def create_ui_character() : ui_character= Factory.UICharacter() ui_character.ui_combat= self return ui_character resize( ui_character_list, len_need, create_ui_character ) assert len( ui_character_list.children ) == len_need for i, character in enumerate( characters ) : ui_character= ui_character_list.children[i] ui_character.character= character ui_character.name= character.name ui_character.image= character.image ui_character.seq= str( 1+self.combat.objects.index( character ) ) ui_character.hp_name= get_property( u'hp' ).__doc__ ui_character.hp_value= character.hp ui_character.hp_max= character.hp_max ui_character.speed_name= get_property( u'speed' ).__doc__ ui_character.speed_value= character.speed ui_character.dex_name= get_property( u'dex' ).__doc__ ui_character.dex_value= character.dex ui_character.is_active= ( character is self.active_character ) ui_character.is_invalid_target= ( self.selected_detail.current == u'skill' and \ character not in self.__valid_targets ) states= [ state for state in character.iter_states() ] len_need= len( states ) resize( ui_character.state_list, len_need, Factory.UIState ) assert( len( ui_character.state_list.children ) == len_need ) for j, state in enumerate( states ) : ui_state= ui_character.state_list.children[j] ui_state.icon= state.icon