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

contentProviderPlanetaryProductionSystems.py (5165B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\agencyNew\contentProviders\contentProviderPlanetaryProductionSystems.py
      2 import telemetry
      3 from eve.client.script.ui.shared.agencyNew import agencyConst, agencyFilters
      4 from eve.client.script.ui.shared.agencyNew.contentGroups import contentGroupConst
      5 from eve.client.script.ui.shared.agencyNew.contentPieces.planetaryProductionSystemContentPiece import PlanetaryProductionSystemContentPiece
      6 from eve.client.script.ui.shared.agencyNew.contentProviders.baseContentProvider import BaseContentProvider
      7 from eve.common.lib import appConst
      8 from eve.common.script.sys.idCheckers import IsKnownSpaceSystem
      9 
     10 class ContentProviderPlanetaryProductionSystems(BaseContentProvider):
     11     contentType = agencyConst.CONTENTTYPE_PLANETARYPRODUCTION
     12     contentGroup = contentGroupConst.contentGroupPlanetaryProduction
     13     __notifyevents__ = BaseContentProvider.__notifyevents__ + ['OnSessionChanged']
     14 
     15     @telemetry.ZONE_METHOD
     16     def __init__(self):
     17         self.starMapSvc = sm.GetService('starmap')
     18         self.knownSolarSystems = self.starMapSvc.GetKnownUniverseSolarSystems()
     19         self.validSolarSystemIDs = []
     20         self.desiredPlanetTypes = []
     21         super(ContentProviderPlanetaryProductionSystems, self).__init__()
     22 
     23     def OnSessionChanged(self, isRemote, sess, change):
     24         if 'solarsystemid' in change:
     25             self.validSolarSystemIDs = []
     26 
     27     @telemetry.ZONE_METHOD
     28     def _ConstructContentPieces(self):
     29         if not self.validSolarSystemIDs:
     30             self.UpdateValidSolarSystemIDs()
     31         systemContentPieces = [ self.ConstructSystemContentPiece(solarSystemID) for solarSystemID in self.validSolarSystemIDs ]
     32         self.ExtendContentPieces(systemContentPieces)
     33 
     34     def UpdateValidSolarSystemIDs(self):
     35         self.validSolarSystemIDs = self.GetValidSolarSystemIDs()[:agencyConst.MAX_CONTENT_PIECES_MAX]
     36 
     37     def OnAgencyFilterChanged(self, contentGroupID, filterType, value):
     38         if contentGroupID != self.contentGroup:
     39             return
     40         if filterType == agencyConst.FILTERTYPE_PLANETTYPES:
     41             self.UpdateDesiredPlanetTypes()
     42         self.validSolarSystemIDs = []
     43         super(ContentProviderPlanetaryProductionSystems, self).OnAgencyFilterChanged(contentGroupID, filterType, value)
     44 
     45     def UpdateDesiredPlanetTypes(self):
     46         self.desiredPlanetTypes = self.GetDesiredPlanetTypes()
     47 
     48     @telemetry.ZONE_METHOD
     49     def GetValidSolarSystemIDs(self):
     50         if not self.desiredPlanetTypes:
     51             self.UpdateDesiredPlanetTypes()
     52         return [ solarSystemID for solarSystemID in self.GetAllSolarSystemIDsWithinJumpRange() if self.CheckSystemCriteria(solarSystemID, self.desiredPlanetTypes) ]
     53 
     54     @telemetry.ZONE_METHOD
     55     def ConstructSystemContentPiece(self, solarSystemID):
     56         planetItemIDsInSystem = self.GetPlanetItemIDsInSystem(solarSystemID)
     57         return PlanetaryProductionSystemContentPiece(solarSystemID=solarSystemID, typeID=appConst.typeSolarSystem, itemID=solarSystemID, planetItemIDsInSystem=planetItemIDsInSystem, desiredPlanetTypes=self.desiredPlanetTypes)
     58 
     59     @telemetry.ZONE_METHOD
     60     def GetPlanetItemIDsInSystem(self, solarSystemID):
     61         if solarSystemID not in self.knownSolarSystems:
     62             wormholePlanets = self.GetWormholePlanets()
     63             if not wormholePlanets:
     64                 return []
     65             return wormholePlanets.keys()
     66         return self.knownSolarSystems[solarSystemID].planetItemIDs
     67 
     68     @telemetry.ZONE_METHOD
     69     def GetPlanetTypesInSystem(self, solarSystemID):
     70         if solarSystemID not in self.knownSolarSystems:
     71             wormholePlanets = self.GetWormholePlanets()
     72             if not wormholePlanets:
     73                 return []
     74             return [ planet.typeID for planet in wormholePlanets.values() ]
     75         solarSystemInfo = self.knownSolarSystems[solarSystemID]
     76         planetsInSystem = solarSystemInfo.planetCountByType.keys()
     77         return planetsInSystem
     78 
     79     def GetWormholePlanets(self):
     80         systemCache = cfg.mapSolarSystemContentCache[session.solarsystemid2]
     81         wormholePlanets = getattr(systemCache, 'planets')
     82         return wormholePlanets
     83 
     84     @telemetry.ZONE_METHOD
     85     def CheckSystemCriteria(self, solarSystemID, desiredPlanetTypes):
     86         return self.CheckDistanceCriteria(solarSystemID) and self.CheckPlanetTypeCriteria(solarSystemID, desiredPlanetTypes) and self.CheckSecurityStatusFilterCriteria(solarSystemID)
     87 
     88     @telemetry.ZONE_METHOD
     89     def CheckPlanetTypeCriteria(self, solarSystemID, desiredPlanetTypes):
     90         planetsInSystem = self.GetPlanetTypesInSystem(solarSystemID)
     91         systemHasDesiredPlanets = any((desiredPlanetType in planetsInSystem for desiredPlanetType in desiredPlanetTypes))
     92         return systemHasDesiredPlanets
     93 
     94     @telemetry.ZONE_METHOD
     95     def GetDesiredPlanetTypes(self):
     96         planetTypesFilterValue = agencyFilters.GetFilterValue(self.contentGroup, agencyConst.FILTERTYPE_PLANETTYPES)
     97         desiredPlanetTypes = [ planetType for planetType, filterValue in planetTypesFilterValue.iteritems() if filterValue is True ]
     98         return desiredPlanetTypes