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

contentProviderStorylineAgents.py (2557B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\agencyNew\contentProviders\contentProviderStorylineAgents.py
      2 from eve.client.script.ui.shared.agencyNew import agencyConst
      3 from eve.client.script.ui.shared.agencyNew.contentGroups import contentGroupConst
      4 from eve.client.script.ui.shared.agencyNew.contentPieces.agentContentPiece import AgentContentPiece
      5 from eve.client.script.ui.shared.agencyNew.contentProviders.baseContentProvider import BaseContentProvider
      6 from eve.common.lib import appConst
      7 from localization import GetByLabel
      8 
      9 class ContentProviderStorylineAgents(BaseContentProvider):
     10     contentType = agencyConst.CONTENTTYPE_STORYLINEAGENTS
     11     contentGroup = contentGroupConst.contentGroupStorylineAgents
     12     __notifyevents__ = BaseContentProvider.__notifyevents__ + ['OnAgentMissionChanged']
     13 
     14     def __init__(self):
     15         super(ContentProviderStorylineAgents, self).__init__()
     16         sm.RegisterNotify(self)
     17 
     18     def _ConstructContentPieces(self):
     19         agents = self.GetActiveStorylineAgents()
     20         contentPieces = [ self.ConstructContentPiece(agent) for agent in agents ]
     21         self.ExtendContentPieces(contentPieces)
     22 
     23     def GetActiveStorylineAgents(self):
     24         missions = self.GetAllActiveMissions()
     25         agentSvc = sm.GetService('agents')
     26         agents = [ agentSvc.GetAgentByID(mission.agentID) for mission in missions ]
     27         return [ agent for agent in agents if self.CheckAgentTypeIDCriteria(agent) ]
     28 
     29     def GetAllActiveMissions(self):
     30         return sm.GetService('journal').GetActiveMissions()
     31 
     32     def CheckAgentTypeIDCriteria(self, agent):
     33         return agent.agentTypeID in (appConst.agentTypeStorylineMissionAgent, appConst.agentTypeGenericStorylineMissionAgent)
     34 
     35     def ConstructContentPiece(self, agent):
     36         contentPiece = AgentContentPiece(solarSystemID=agent.solarsystemID, itemID=agent.agentID, locationID=agent.stationID, typeID=agent.agentTypeID, ownerID=agent.corporationID, agent=agent)
     37         return contentPiece
     38 
     39     def OnAgentMissionChanged(self, missionState, agentID):
     40         self.InvalidateContentPieces()
     41         self._CheckBlinkNeocomButton(agentID, missionState)
     42 
     43     def _CheckBlinkNeocomButton(self, agentID, missionState):
     44         agent = sm.GetService('agents').GetAgentByID(agentID)
     45         if agent and self.CheckAgentTypeIDCriteria(agent):
     46             if missionState == appConst.agentMissionOffered:
     47                 sm.GetService('neocom').Blink('agency', GetByLabel('UI/Neocom/Blink/NewStorylineMissionAvailable'))