attributes.py (5700B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\achievement_system\client\model\definition\category\attributes.py 2 from achievement_system.client.api.error import DefinitionNotFoundError 3 from achievement_system.client.model.definition.achievement.identifier import AchievementDefinitionIdentifier 4 from achievement_system.client.model.definition.category.identifier import CategoryDefinitionIdentifier 5 from achievement_system.client.model.definition.category.milestone.entry import CategoryMilestoneDefinitionEntry 6 from achievement_system.client.model.definition.category.ui_annotations import CUSTOM_UI_CLASS_TEMPLATE_KEY, OVERVIEW_FEATURE_PRIORITY_KEY, CAMPAIGN_FACTION_STYLE_KEY, get_custom_ui_class_from_annotation, get_campaign_faction_style_from_annotation, get_overview_feature_priority_from_annotation 7 from achievement_system.client.model.flatbuffer.generated import Category as FlatbufferCategory 8 from localization.client.cerberus_formatted_message import CerberusFormattedMessage 9 if False: 10 from typing import List, Dict 11 12 class CategoryDefinitionAttributes(object): 13 14 def __init__(self, name_message, description_message, icon_id, child_categories, child_achievements, milestones, ui_annotations, internal_name, parent_category): 15 self._name_message = name_message 16 self._description_message = description_message 17 self._icon_id = icon_id 18 self._child_categories = child_categories 19 self._child_achievements = child_achievements 20 self._milestones = milestones 21 self._ui_annotations = ui_annotations 22 self._internal_name = internal_name 23 self._parent_category = parent_category 24 self._sort_milestones() 25 26 @property 27 def name_message(self): 28 return self._name_message 29 30 @property 31 def description_message(self): 32 return self._description_message 33 34 @property 35 def icon_id(self): 36 return self._icon_id 37 38 @property 39 def child_categories(self): 40 return self._child_categories 41 42 @property 43 def child_achievements(self): 44 return self._child_achievements 45 46 @property 47 def milestones(self): 48 return self._milestones 49 50 @property 51 def ui_annotations(self): 52 return self._ui_annotations 53 54 @property 55 def internal_name(self): 56 return self._internal_name 57 58 @property 59 def parent_category(self): 60 return self._parent_category 61 62 def get_milestone_index(self, milestone_id): 63 for i in range(len(self._milestones)): 64 if self._milestones[i].identifier == milestone_id: 65 return i 66 67 raise DefinitionNotFoundError 68 69 def get_custom_class_name(self): 70 return get_custom_ui_class_from_annotation(self._ui_annotations.get(CUSTOM_UI_CLASS_TEMPLATE_KEY, None)) 71 72 def get_campaign_faction_style(self): 73 return get_campaign_faction_style_from_annotation(self._ui_annotations.get(CAMPAIGN_FACTION_STYLE_KEY, None)) 74 75 def get_overview_feature_priority(self): 76 return get_overview_feature_priority_from_annotation(self._ui_annotations.get(OVERVIEW_FEATURE_PRIORITY_KEY, None)) 77 78 @classmethod 79 def from_flatbuffer(cls, fb_data, parent_category_id, children_to_skip): 80 child_achievements = [] 81 for i in range(fb_data.AchievementsLength()): 82 achievement_id = AchievementDefinitionIdentifier.from_flatbuffer(fb_data.Achievements(i).Id()) 83 if achievement_id not in children_to_skip: 84 child_achievements.append(achievement_id) 85 86 return CategoryDefinitionAttributes(name_message=CerberusFormattedMessage(identifier=fb_data.Name(), parameters={}), description_message=CerberusFormattedMessage(identifier=fb_data.Description(), parameters={}), icon_id=fb_data.IconId(), child_categories=[ CategoryDefinitionIdentifier.from_flatbuffer(fb_data.Categories(i).Id()) for i in range(fb_data.CategoriesLength()) ], child_achievements=child_achievements, milestones=[ CategoryMilestoneDefinitionEntry.from_flatbuffer(fb_data.Milestones(i)) for i in range(fb_data.MilestonesLength()) ], ui_annotations={fb_data.UiAnnotations(i).Key():fb_data.UiAnnotations(i).Value() for i in range(fb_data.UiAnnotationsLength())}, internal_name=fb_data.InternalName(), parent_category=parent_category_id) 87 88 def _sort_milestones(self): 89 90 def _sort_key(m): 91 return m.attributes.target 92 93 self.milestones.sort(key=_sort_key) 94 95 def __eq__(self, other): 96 if other is None or not isinstance(other, CategoryDefinitionAttributes): 97 return False 98 return self.name_message == other.name_message and self.description_message == other.description_message and self.icon_id == other.icon_id and self.child_categories == other.child_categories and self.child_achievements == other.child_achievements and self.milestones == other.milestones and self.ui_annotations == other.ui_annotations and self.internal_name == other.internal_name and self.parent_category == other.parent_category 99 100 def __ne__(self, other): 101 return not self.__eq__(other) 102 103 def __str__(self): 104 return 'internal name: %s\n' % self.internal_name + 'name: %s\n' % self.name_message.get_localized_text() + 'description: %s\n' % self.description_message.get_localized_text() + 'icon_id: %s\n' % self.icon_id + 'child_categories: %s\n' % '\n, '.join([ c.__str__() for c in self.child_categories ]) + 'child_achievements: %s\n' % '\n, '.join([ a.__str__() for a in self.child_achievements ]) + 'milestones:\n %s\n' % '\n '.join([ m.__str__() for m in self.milestones ]) + 'ui_annotations: %s\n' % ', '.join([ '%s: %s' % (x, y) for x, y in self.ui_annotations.items() ])