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

career_goal_svc.py (2902B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\careergoals\client\career_goal_svc.py
      2 import logging
      3 import uuid
      4 from careergoals.client.goal_data_controller import GoalDataController
      5 from careergoals.client.messenger.event_messenger import PublicCareerGoalEventMessenger
      6 from careergoals.client.messenger.notice_messenger import PublicCareerGoalNoticeMessenger
      7 import careergoals.client.messenger.messenger_signal as messenger_signal
      8 _instance = None
      9 
     10 def get_career_goals_svc():
     11     global _instance
     12     if _instance is None:
     13         _instance = _CareerGoalsSvc()
     14     return _instance
     15 
     16 
     17 logger = logging.getLogger(__name__)
     18 
     19 class _CareerGoalsSvc(object):
     20     __startupdependencies__ = ['publicGatewaySvc', 'machoNet']
     21     __notifyevents__ = ['OnSessionReset', 'OnSessionChanged']
     22 
     23     def __init__(self):
     24         self._public_gateway = sm.GetService('publicGatewaySvc')
     25         self._goal_data_controller = GoalDataController()
     26         self._event_messenger = PublicCareerGoalEventMessenger(self._public_gateway)
     27         self._notice_messenger = PublicCareerGoalNoticeMessenger(self._public_gateway)
     28         messenger_signal.on_goal_progressed.connect(self._on_progressed_notice)
     29         messenger_signal.on_goal_completed.connect(self._on_completed_notice)
     30         sm.RegisterNotify(self)
     31 
     32     def __del__(self):
     33         messenger_signal.on_goal_progressed.disconnect(self._on_progressed_notice)
     34         messenger_signal.on_goal_completed.disconnect(self._on_completed_notice)
     35 
     36     def get_goal_data_controller(self):
     37         return self._goal_data_controller
     38 
     39     def emit_goal_tracked(self, goal_id):
     40         self._event_messenger.goal_tracked(goal_id)
     41 
     42     def emit_career_selected(self, goal_id):
     43         self._event_messenger.career_selected(goal_id)
     44 
     45     def emit_group_selected(self, group_name, career_name):
     46         self._event_messenger.group_selected(group_name, career_name)
     47 
     48     def emit_goal_selected(self, goal_id):
     49         self._event_messenger.goal_selected(goal_id)
     50 
     51     def claim_reward(self, goal_id, reward_label):
     52         self._goal_data_controller.claim_reward(goal_id, reward_label)
     53 
     54     def _on_progressed_notice(self, goal_id, progress):
     55         logger.info('CAREER GOALS - goal %s progressed to %s' % (goal_id, progress))
     56         self._goal_data_controller.update_local_goal_progress(goal_id, progress)
     57 
     58     def _on_completed_notice(self, goal_id):
     59         logger.info('CAREER GOALS - goal %s completed' % goal_id)
     60         self._goal_data_controller.mark_local_goal_completed(goal_id)
     61 
     62     def OnSessionChanged(self, _isRemote, _sess, change):
     63         if 'charid' in change:
     64             self._goal_data_controller.clear_state_cache()
     65             self._goal_data_controller.clear_local_cache()
     66 
     67     def OnSessionReset(self):
     68         self._goal_data_controller.clear_state_cache()
     69         self._goal_data_controller.clear_local_cache()