NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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() ])