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

goal_progress.py (2237B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\careergoals\client\goal_progress.py
      2 import uuid
      3 import datetime
      4 from careergoals.client.const import RewardLabel
      5 from google.protobuf.timestamp_pb2 import Timestamp
      6 from eveProto.generated.eve_public.career.goal.api.requests_pb2 import GetAllResponse
      7 from eveProto.generated.eve_public.career.goal_pb2 import Identifier as GoalIdentifier
      8 
      9 class GoalProgress(object):
     10 
     11     def __init__(self, goal_id, progress, completed, claimed_states):
     12         self.goal_id = goal_id
     13         self.progress = progress
     14         self.completed = completed
     15         self.claimed_states = claimed_states
     16 
     17     @classmethod
     18     def from_proto(cls, payload):
     19         return GoalProgress(goal_id=uuid.UUID(bytes=payload.goal.uuid), progress=payload.progress, completed=payload.HasField('completed_time'), claimed_states={RewardLabel.from_proto(x.label):x.HasField('claimed_time') for x in payload.reward_label_states})
     20 
     21     @classmethod
     22     def to_proto(cls, obj):
     23         reward_label_states = []
     24         for k, v in obj.claimed_states.iteritems():
     25             reward_label_state = GetAllResponse.Goal.RewardLabelState(label=RewardLabel.to_proto(k))
     26             if v:
     27                 claimed_time = Timestamp()
     28                 claimed_time.FromDatetime(datetime.datetime.now())
     29                 reward_label_state.claimed_time.CopyFrom(claimed_time)
     30             else:
     31                 reward_label_state.not_claimed = True
     32             reward_label_states.append(reward_label_state)
     33 
     34         proto = GetAllResponse.Goal(goal=GoalIdentifier(uuid=obj.goal_id.bytes), progress=obj.progress, reward_label_states=reward_label_states)
     35         if obj.completed:
     36             completed_time = Timestamp()
     37             completed_time.FromDatetime(datetime.datetime.now())
     38             proto.completed_time.CopyFrom(completed_time)
     39         else:
     40             proto.not_completed = True
     41         return proto
     42 
     43     def __eq__(self, other):
     44         return other is not None and self.goal_id == other.goal_id and self.progress == other.progress and self.completed == other.completed and self.claimed_states == other.claimed_states
     45 
     46     def __ne__(self, other):
     47         return not self.__eq__(other)