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