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

goal_definition.py (7645B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\careergoals\client\goal_definition.py
      2 import uuid
      3 import careergoals.client.const as careerGoalsConst
      4 from careergoals.client.const import RewardLabel
      5 from careergoals.client.reward_definition import RewardDefinition
      6 from eve.common.lib.appConst import MIN
      7 from localization import GetByMessageID, GetByLabel
      8 from eveProto.generated.eve_public.career.goal_pb2 import Attributes as GoalAttributes
      9 from eveProto.generated.eve_public.localization.message_pb2 import Identifier as LocalizationIdentifier
     10 from eveProto.generated.eve_public.ui.annotation_pb2 import Annotation
     11 
     12 class GoalDefinition(object):
     13 
     14     def __init__(self, identifier, name_msg_id, description_msg_id, target_value, group_id, sub_type, duration, aura_text_id, agency_link_text_id, agency_screen_id, video_id, order, threat, career, career_points, rewards):
     15         self._goal_id = identifier
     16         self._name_msg_id = name_msg_id
     17         self._desc_msg_id = description_msg_id
     18         self._target_value = target_value
     19         self._group_id = group_id
     20         self._sub_type = sub_type
     21         self._duration = duration
     22         self._aura_text_id = aura_text_id
     23         self._agency_link_text_id = agency_link_text_id
     24         self._agency_screen_id = agency_screen_id
     25         self._video_id = video_id
     26         self._order = order
     27         self._threat = threat
     28         self._career = career
     29         self._career_points = career_points
     30         self._rewards = rewards
     31         self._name = None
     32         self._description = None
     33 
     34     @property
     35     def goal_id(self):
     36         return self._goal_id
     37 
     38     @property
     39     def sub_type(self):
     40         return self._sub_type
     41 
     42     @property
     43     def name(self):
     44         if not self._name:
     45             self._name = GetByMessageID(self._name_msg_id)
     46         return self._name
     47 
     48     @property
     49     def description(self):
     50         if not self._description:
     51             self._description = GetByMessageID(self._desc_msg_id)
     52         return self._description
     53 
     54     @property
     55     def target_value(self):
     56         return self._target_value
     57 
     58     @property
     59     def rewards(self):
     60         return self._rewards
     61 
     62     @property
     63     def reward_labels(self):
     64         reward_labels = set()
     65         for r in self.rewards:
     66             if r.reward_label not in reward_labels:
     67                 reward_labels.add(r.reward_label)
     68 
     69         return reward_labels
     70 
     71     @property
     72     def omega_rewards(self):
     73         return [ r for r in self._rewards if r.reward_label == RewardLabel.OMEGA ]
     74 
     75     @property
     76     def alpha_rewards(self):
     77         return [ r for r in self._rewards if r.reward_label == RewardLabel.ALPHA ]
     78 
     79     @property
     80     def career(self):
     81         return self._career
     82 
     83     @property
     84     def career_points(self):
     85         return self._career_points
     86 
     87     @property
     88     def career_points_text(self):
     89         return GetByLabel('UI/CareerPortal/NumCareerPoints', numPoints=self.career_points)
     90 
     91     @property
     92     def group_id(self):
     93         return self._group_id
     94 
     95     @property
     96     def threat(self):
     97         return self._threat
     98 
     99     @property
    100     def duration(self):
    101         return self._duration
    102 
    103     @property
    104     def duration_text(self):
    105         try:
    106             value = int(self.duration)
    107             from carbon.common.script.util.format import FmtDate
    108             return FmtDate(value * MIN, 'ss')
    109         except ValueError:
    110             return ''
    111 
    112     @property
    113     def aura_text_id(self):
    114         return self._aura_text_id
    115 
    116     @property
    117     def agency_link_text_id(self):
    118         return self._agency_link_text_id
    119 
    120     @property
    121     def agency_screen_id(self):
    122         return self._agency_screen_id
    123 
    124     @property
    125     def video_id(self):
    126         return self._video_id
    127 
    128     @property
    129     def order(self):
    130         return self._order
    131 
    132     def has_video_id(self):
    133         return self.video_id is not None and self.video_id != u'null'
    134 
    135     @classmethod
    136     def from_proto(cls, identifier, payload):
    137         ui_annotations = payload.ui_annotations
    138         GoalDefinition._sanitize_annotations(ui_annotations)
    139         try:
    140             order = int(GoalDefinition._find_annotation(ui_annotations, careerGoalsConst.GOAL_ANNOTATION_ORDER))
    141         except (TypeError, ValueError):
    142             order = None
    143 
    144         career = careerGoalsConst.get_career_path_id_from_proto_id(payload.career)
    145         group_id = careerGoalsConst.get_career_path_group_id(career, GoalDefinition._find_annotation(ui_annotations, careerGoalsConst.GOAL_ANNOTATION_ACTIVITY_GROUP))
    146         return GoalDefinition(identifier=identifier, name_msg_id=payload.name.sequential, description_msg_id=payload.description.sequential, target_value=payload.target, group_id=group_id, sub_type=GoalDefinition._find_annotation(ui_annotations, careerGoalsConst.GOAL_ANNOTATION_GOAL_SUBTYPE), duration=GoalDefinition._find_annotation(ui_annotations, careerGoalsConst.GOAL_ANNOTATION_DURATION), aura_text_id=GoalDefinition._find_annotation(ui_annotations, careerGoalsConst.GOAL_ANNOTATION_AURA_TEXT_ID), agency_link_text_id=GoalDefinition._find_annotation(ui_annotations, careerGoalsConst.GOAL_ANNOTATION_AGENCY_LINK_TEXT_ID), agency_screen_id=GoalDefinition._find_annotation(ui_annotations, careerGoalsConst.GOAL_ANNOTATION_AGENCY_SCREEN_ID), video_id=GoalDefinition._find_annotation(ui_annotations, careerGoalsConst.GOAL_ANNOTATION_VIDEO), order=order, threat=payload.threat, career=career, career_points=payload.career_points, rewards=[ RewardDefinition.from_proto(x) for x in payload.rewards ])
    147 
    148     @classmethod
    149     def to_proto(cls, obj):
    150         group_id = careerGoalsConst.get_annotation_for_career_path_group_id(obj.career, obj.group_id)
    151         ui_annotations = []
    152         ui_annotations.append(Annotation(key=careerGoalsConst.GOAL_ANNOTATION_ACTIVITY_GROUP, value=str(group_id)))
    153         ui_annotations.append(Annotation(key=careerGoalsConst.GOAL_ANNOTATION_GOAL_SUBTYPE, value=str(obj.sub_type)))
    154         ui_annotations.append(Annotation(key=careerGoalsConst.GOAL_ANNOTATION_DURATION, value=str(obj.duration)))
    155         ui_annotations.append(Annotation(key=careerGoalsConst.GOAL_ANNOTATION_AURA_TEXT_ID, value=str(obj.aura_text_id)))
    156         ui_annotations.append(Annotation(key=careerGoalsConst.GOAL_ANNOTATION_AGENCY_LINK_TEXT_ID, value=str(obj.agency_link_text_id)))
    157         ui_annotations.append(Annotation(key=careerGoalsConst.GOAL_ANNOTATION_AGENCY_SCREEN_ID, value=str(obj.agency_screen_id)))
    158         ui_annotations.append(Annotation(key=careerGoalsConst.GOAL_ANNOTATION_VIDEO, value=str(obj.video_id)))
    159         return GoalAttributes(name=LocalizationIdentifier(sequential=obj._name_msg_id), description=LocalizationIdentifier(sequential=obj._desc_msg_id), target=obj.target_value, ui_annotations=ui_annotations, threat=obj.threat, career=careerGoalsConst.get_proto_id_from_career_path_id(obj.career), career_points=obj.career_points, rewards=[ RewardDefinition.to_proto(x) for x in obj.rewards ])
    160 
    161     def __eq__(self, other):
    162         return isinstance(other, self.__class__) and getattr(other, 'goal_id', None) == self.goal_id
    163 
    164     def __hash__(self):
    165         return hash(str(self._goal_id))
    166 
    167     def __cmp__(self, other):
    168         if self.order is None or other.order is None:
    169             return 0
    170         return cmp(self.order, other.order)
    171 
    172     @staticmethod
    173     def _sanitize_annotations(ui_annotations):
    174         for annotation in ui_annotations:
    175             annotation.value = ''.join(annotation.value.split())
    176 
    177         return ui_annotations
    178 
    179     @staticmethod
    180     def _find_annotation(annotations, key):
    181         for each in annotations:
    182             if each.key == key:
    183                 return each.value