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

attributes.py (7306B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\achievement_system\client\model\definition\achievement\attributes.py
      2 from datetime import datetime
      3 from achievement_system.client.api.error import DefinitionNotFoundError
      4 from achievement_system.client.model.definition.achievement.milestone.entry import AchievementMilestoneDefinitionEntry
      5 from achievement_system.client.model.definition.category.identifier import CategoryDefinitionIdentifier
      6 from achievement_system.client.model.definition.contribution_method.configuration import ContributionMethodConfiguration
      7 from achievement_system.client.model.flatbuffer.generated import Achievement as FlatbufferAchievement
      8 from achievement_system.client.model.definition.icon_frames.ui_annotations import get_icon_outer_frame_from_annotation, get_icon_outer_mask_from_annotation, get_icon_inner_frame_from_annotation, ICON_OUTER_FRAME_KEY, ICON_INNER_FRAME_KEY
      9 from localization.client.cerberus_formatted_message import CerberusFormattedMessage
     10 from metadata.common.content_tags import ContentTag
     11 if False:
     12     from typing import List, Dict
     13 
     14 class AchievementDefinitionAttributes(object):
     15 
     16     def __init__(self, name_message, description_message, flavor_text_message, icon_id, issuer_corp_identifier, contribution_method, milestones, release_date, expiration_date, ui_annotations, tags, archived, internal_name, parent_category):
     17         self._name_message = name_message
     18         self._description_message = description_message
     19         self._flavor_text_message = flavor_text_message
     20         self._icon_id = icon_id
     21         self._issuer_corp_identifier = issuer_corp_identifier
     22         self._contribution_method = contribution_method
     23         self._milestones = milestones
     24         self._release_date = release_date
     25         self._expiration_date = expiration_date
     26         self._ui_annotations = ui_annotations
     27         self._tags = tags
     28         self._archived = archived
     29         self._internal_name = internal_name
     30         self._parent_category = parent_category
     31         self._sort_milestones()
     32 
     33     @property
     34     def name_message(self):
     35         return self._name_message
     36 
     37     @property
     38     def description_message(self):
     39         return self._description_message
     40 
     41     @property
     42     def flavor_text_message(self):
     43         return self._flavor_text_message
     44 
     45     @property
     46     def icon_id(self):
     47         return self._icon_id
     48 
     49     @property
     50     def issuer_corp_identifier(self):
     51         return self._issuer_corp_identifier
     52 
     53     @property
     54     def contribution_method(self):
     55         return self._contribution_method
     56 
     57     @property
     58     def milestones(self):
     59         return self._milestones
     60 
     61     @property
     62     def release_date(self):
     63         return self._release_date
     64 
     65     @property
     66     def expiration_date(self):
     67         return self._expiration_date
     68 
     69     @property
     70     def expired(self):
     71         if self._expiration_date is None:
     72             return False
     73         return datetime.now() > self._expiration_date
     74 
     75     @property
     76     def ui_annotations(self):
     77         return self._ui_annotations
     78 
     79     @property
     80     def tags(self):
     81         return self._tags
     82 
     83     @property
     84     def archived(self):
     85         return self._archived
     86 
     87     @property
     88     def internal_name(self):
     89         return self._internal_name
     90 
     91     @property
     92     def parent_category(self):
     93         return self._parent_category
     94 
     95     @property
     96     def is_historic(self):
     97         return self.archived or self.expired
     98 
     99     def get_milestone_index(self, milestone_id):
    100         for i in range(len(self._milestones)):
    101             if self._milestones[i].identifier == milestone_id:
    102                 return i
    103 
    104         raise DefinitionNotFoundError
    105 
    106     def get_icon_frame_keys(self, is_completed = False):
    107         outer_frame = get_icon_outer_frame_from_annotation(self._ui_annotations.get(ICON_OUTER_FRAME_KEY, None))
    108         outer_mask = get_icon_outer_mask_from_annotation(self._ui_annotations.get(ICON_INNER_FRAME_KEY, None))
    109         inner_frame = get_icon_inner_frame_from_annotation(self._ui_annotations.get(ICON_INNER_FRAME_KEY, None), is_completed)
    110         return (outer_frame, outer_mask, inner_frame)
    111 
    112     def _sort_milestones(self):
    113 
    114         def _sort_key(m):
    115             return m.attributes.cumulated_target
    116 
    117         self.milestones.sort(key=_sort_key)
    118 
    119     @classmethod
    120     def from_flatbuffer(cls, fb_data, parent_category_id):
    121         return AchievementDefinitionAttributes(name_message=CerberusFormattedMessage(identifier=fb_data.Name(), parameters={}), description_message=CerberusFormattedMessage(identifier=fb_data.Description(), parameters={}), flavor_text_message=CerberusFormattedMessage(identifier=fb_data.FlavorText(), parameters={}) if fb_data.FlavorText() else None, icon_id=fb_data.IconId(), issuer_corp_identifier=fb_data.IssuerNpcCorp() if fb_data.IssuerNpcCorp() else None, contribution_method=ContributionMethodConfiguration.from_flatbuffer(fb_data.Contribution()), milestones=[ AchievementMilestoneDefinitionEntry.from_flatbuffer(fb_data.Milestones(i)) for i in range(fb_data.MilestonesLength()) ], release_date=datetime.fromtimestamp(fb_data.ReleaseDateUnixMs() / 1000.0) if fb_data.ReleaseDateUnixMs() else None, expiration_date=datetime.fromtimestamp(fb_data.ExpirationDateUnixMs() / 1000.0) if fb_data.ExpirationDateUnixMs() else None, ui_annotations={fb_data.UiAnnotations(i).Key():fb_data.UiAnnotations(i).Value() for i in range(fb_data.UiAnnotationsLength())}, tags=[ ContentTag(fb_data.Tags(i), {}) for i in range(fb_data.TagsLength()) ], archived=fb_data.Archived(), internal_name=fb_data.InternalName(), parent_category=parent_category_id)
    122 
    123     def __eq__(self, other):
    124         if other is None or not isinstance(other, AchievementDefinitionAttributes):
    125             return False
    126         return self.name_message == other.name_message and self.description_message == other.description_message and self.flavor_text_message == other.flavor_text_message and self.icon_id == other.icon_id and self.issuer_corp_identifier == other.issuer_corp_identifier and self.contribution_method == other.contribution_method and self.milestones == other.milestones and self.release_date == other.release_date and self.expiration_date == other.expiration_date and self.ui_annotations == other.ui_annotations and self.tags == other.tags and self.archived == other.archived and self.internal_name == other.internal_name and self.parent_category == other.parent_category
    127 
    128     def __ne__(self, other):
    129         return not self.__eq__(other)
    130 
    131     def __str__(self):
    132         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() + 'flavor_text: %s\n' % (self.flavor_text_message.get_localized_text() if self.flavor_text_message else 'None') + 'icon_id: %s\n' % (self.icon_id if self.icon_id else 'None') + 'issuer_corp_identifier: %s\n' % self.issuer_corp_identifier + 'contribution_method: %s\n' % self.contribution_method + 'milestones: %s\n' % '\n, '.join([ s.__str__() for s in self.milestones ]) + 'release_date: %s\n' % self.release_date + 'expiration_date: %s\n' % self.expiration_date + 'ui_annotations: %s\n' % ', '.join([ '%s: %s' % (x, y) for x, y in self.ui_annotations.items() ]) + 'tags: %s\n' % self.tags + 'archived: %s\n' % self.archived