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

careerControllerUI.py (4094B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\careerPortal\careerControllerUI.py
      2 from carbonui.uicore import uicore
      3 import eve.client.script.ui.shared.careerPortal.careerConst as careerConst
      4 import eve.client.script.ui.shared.careerPortal.uiSettings as careerSettings
      5 from careergoals.client.feature_flag import is_air_career_program_enabled
      6 from careergoals.client.signal import on_air_career_program_availability_changed
      7 from eve.client.script.ui.shared.careerPortal.cpSignals import on_cp_goal_tracking_added, on_cp_goal_tracking_removed
      8 from careergoals.client.career_goal_svc import get_career_goals_svc
      9 from eve.client.script.ui.shared.subtitles import GetSubtitlePathForVideo
     10 from eve.client.script.ui.shared.videowindow import VideoPlayerWindow
     11 _instance = None
     12 
     13 def get_career_portal_controller_svc():
     14     global _instance
     15     if _instance is None:
     16         _instance = _CareerControllerUI()
     17     return _instance
     18 
     19 
     20 class _CareerControllerUI(object):
     21     __notifyevents__ = ['OnCharacterSessionChanged', 'OnSessionReset']
     22 
     23     def __init__(self):
     24         self._reset_for_character()
     25         on_air_career_program_availability_changed.connect(self._on_air_career_program_availability_changed)
     26         sm.RegisterNotify(self)
     27 
     28     def __del__(self):
     29         on_air_career_program_availability_changed.disconnect(self._on_air_career_program_availability_changed)
     30 
     31     def OnCharacterSessionChanged(self, _oldCharacterID, _newCharacterID):
     32         if _newCharacterID is not None:
     33             self._reset_for_character()
     34 
     35     def OnSessionReset(self):
     36         self._reset_for_character()
     37 
     38     def _reset_for_character(self):
     39         self._tracked_goal_ids = careerSettings.GetTrackedGoalsFromSettings(set())
     40 
     41     def select_career(self, career_path_id, goal_id):
     42         careerConst.SELECTED_CAREER_PATH_SETTING.set(career_path_id)
     43         careerConst.CAREER_WINDOW_STATE_SETTING.set(careerConst.CareerWindowState.ACTIVITIES_VIEW)
     44         get_career_goals_svc().emit_career_selected(goal_id)
     45 
     46     def select_activity(self, activity_id, activity_name, career_path_id):
     47         careerConst.SELECTED_ACTIVITY_SETTING.set(activity_id)
     48         careerConst.CAREER_WINDOW_STATE_SETTING.set(careerConst.CareerWindowState.GOALS_VIEW)
     49         get_career_goals_svc().emit_group_selected(activity_name, careerConst.GetCareerPathName(career_path_id))
     50 
     51     def select_goal(self, goal_id):
     52         careerConst.SELECTED_GOAL_SETTING.set(goal_id)
     53         if goal_id:
     54             get_career_goals_svc().emit_goal_selected(goal_id)
     55 
     56     def is_goal_tracked(self, goal_id):
     57         return goal_id in self._tracked_goal_ids
     58 
     59     def track_goal(self, goal_id):
     60         self._tracked_goal_ids.clear()
     61         self._tracked_goal_ids.add(goal_id)
     62         careerSettings.StoreTrackedGoalsInSettings(self._tracked_goal_ids)
     63         get_career_goals_svc().emit_goal_tracked(goal_id)
     64         on_cp_goal_tracking_added(goal_id)
     65 
     66     def untrack_goal(self, goal_id):
     67         self._tracked_goal_ids.clear()
     68         self._tracked_goal_ids.discard(goal_id)
     69         careerSettings.StoreTrackedGoalsInSettings(self._tracked_goal_ids)
     70         on_cp_goal_tracking_removed(goal_id)
     71 
     72     def get_tracked_goals(self):
     73         return self._tracked_goal_ids
     74 
     75     def _on_air_career_program_availability_changed(self, *args):
     76         if not is_air_career_program_enabled():
     77             tracked_goals = [ g for g in self._tracked_goal_ids ]
     78             for g in tracked_goals:
     79                 self.untrack_goal(g)
     80 
     81     def play_video(self, video_path):
     82         if not video_path:
     83             return
     84         self._video_wnd = VideoPlayerWindow.Open(isMinimizable=False)
     85         self._video_wnd.SetSize(uicore.desktop.width / 2, uicore.desktop.height / 2)
     86         self._video_wnd.SetVideoPath(video_path, subtitles=GetSubtitlePathForVideo(video_path, session.languageID))
     87         self._video_wnd.SetVideoFinishedCallback(self._on_video_finished)
     88         self._video_wnd.ShowModal()
     89 
     90     def _on_video_finished(self):
     91         if self._video_wnd:
     92             self._video_wnd.Close()