category.py (2417B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\achievement_system\client\model\state\category.py 2 from datetime import datetime 3 from achievement_system.client.model.state.category_reached_milestone import CategoryReachedMilestone 4 from eveProto.generated.eve_public.achievement.category.api.requests_pb2 import GetResponse 5 if False: 6 from typing import List 7 8 class CachedCategoryStateAttributes: 9 10 def __init__(self, category_state, expiration): 11 self._category_state = category_state 12 self._expiration = expiration 13 14 @property 15 def category_state(self): 16 return self._category_state 17 18 @property 19 def expiration(self): 20 return self._expiration 21 22 @property 23 def is_expired(self): 24 return datetime.now() > self._expiration 25 26 27 class CategoryStateAttributes(object): 28 29 def __init__(self, score, reached_milestones): 30 self._score = score 31 self._reached_milestones = reached_milestones 32 33 @property 34 def score(self): 35 return self._score 36 37 @property 38 def reached_milestones(self): 39 return self._reached_milestones 40 41 def is_milestone_reached(self, milestone_id): 42 for reached_milestone in self._reached_milestones: 43 if reached_milestone.identifier == milestone_id: 44 return True 45 46 return False 47 48 @classmethod 49 def from_proto(cls, category): 50 reached_milestones = [] 51 for milestone in category.reached_milestones: 52 reached_milestones.append(CategoryReachedMilestone.from_proto(payload=milestone)) 53 54 return CategoryStateAttributes(category.score, reached_milestones) 55 56 @classmethod 57 def to_proto(cls, instance): 58 proto_reached_milestones = [] 59 for reached_milestone in instance.reached_milestones: 60 proto_milestone = CategoryReachedMilestone.to_proto(instance=reached_milestone) 61 proto_reached_milestones.append(proto_milestone) 62 63 return GetResponse(score=instance.score, reached_milestones=proto_reached_milestones) 64 65 def __eq__(self, other): 66 return self.score == other.score and self.reached_milestones == other.reached_milestones 67 68 def __ne__(self, other): 69 return not self.__eq__(other) 70 71 def __str__(self): 72 return 'score: %d' % self.score + 'milestones:\n %s\n' % '\n '.join([ m.__str__() for m in self.reached_milestones ])