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

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