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

contentProviderEpicArcs.py (2701B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\agencyNew\contentProviders\contentProviderEpicArcs.py
      2 from carbon.common.lib import telemetry
      3 from eve.client.script.ui.shared.agencyNew import agencyConst, agencyUtil, agencyFilters
      4 from eve.client.script.ui.shared.agencyNew.contentGroups import contentGroupConst
      5 from eve.client.script.ui.shared.agencyNew.contentPieces.epicArcAgentContentPiece import EpicArcAgentContentPiece
      6 from eve.client.script.ui.shared.agencyNew.contentProviders.baseContentProvider import BaseContentProvider
      7 from eve.client.script.ui.station.agents.agentUtil import IsAgentStandingSufficientToUse
      8 
      9 class ContentProviderEpicArcs(BaseContentProvider):
     10     __notifyevents__ = BaseContentProvider.__notifyevents__ + ['OnAgentMissionChanged', 'OnEpicArcDataChanged']
     11     contentType = agencyConst.CONTENTTYPE_EPICARCS
     12     contentGroup = contentGroupConst.contentGroupEpicArcs
     13     contentTypeFilters = (agencyConst.CONTENTTYPE_SUGGESTED, agencyConst.CONTENTTYPE_COMBAT, agencyConst.CONTENTTYPE_EPICARCS)
     14 
     15     def OnAgentMissionChanged(self, missionState, agentID):
     16         self.InvalidateContentPieces()
     17 
     18     def OnEpicArcDataChanged(self):
     19         self.InvalidateContentPieces()
     20 
     21     @telemetry.ZONE_METHOD
     22     def _ConstructContentPieces(self):
     23         epicArcs = self.GetAllEpicArcs()
     24         contentPieces = [ self._ConstructContentPiece(epicArc) for epicArc in epicArcs ]
     25         self.contentPieces = sorted(contentPieces, key=self._GetSortKey)
     26 
     27     def _ConstructContentPiece(self, epicArc):
     28         agent = epicArc.GetActiveAgent()
     29         contentPiece = EpicArcAgentContentPiece(agent=agent, epicArc=epicArc, ownerID=epicArc.GetFactionID(), solarSystemID=agent.solarsystemID, itemID=agent.agentID, locationID=agent.stationID, typeID=agent.agentTypeID)
     30         return contentPiece
     31 
     32     def _GetSortKey(self, contentPiece):
     33         return (contentPiece.epicArc.GetState(), contentPiece.GetJumpsToSelfFromCurrentLocation())
     34 
     35     def GetBestEpicArcAgent(self, epicArc):
     36         missions = epicArc.GetActiveMissions()
     37         if not missions:
     38             return self.GetAgent(epicArc.startNodes[0].agentID)
     39         agents = [ self.GetAgent(mission.agentID) for mission in missions ]
     40         agents = sorted(agents, key=self._GetAgentSortKey)
     41         return agents[0]
     42 
     43     def GetAgent(self, agentID):
     44         return sm.GetService('agents').GetAgentByID(agentID)
     45 
     46     @telemetry.ZONE_METHOD
     47     def _GetAgentSortKey(self, agent):
     48         return (-int(IsAgentStandingSufficientToUse(agent)), self.GetNumJumpsToSystem(agent.solarsystemID))
     49 
     50     def GetAllEpicArcs(self):
     51         return sm.GetService('epicArc').GetEpicArcs()