contentProviderAsteroidBelts.py (3156B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\agencyNew\contentProviders\contentProviderAsteroidBelts.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.asteroidBeltSystemContentPiece import AsteroidBeltSystemContentPiece 6 from eve.client.script.ui.shared.agencyNew.contentProviders.baseContentProvider import BaseContentProvider 7 from evedungeons.client.oreTypesInDungeons.data import get_asteroid_types_by_solar_system 8 from evedungeons.client.oreTypesInDungeons.util import get_consolidated_ore_types_in_system 9 10 class ContentProviderAsteroidBelts(BaseContentProvider): 11 contentType = agencyConst.CONTENTTYPE_ASTEROIDBELTS 12 contentGroup = contentGroupConst.contentGroupAsteroidBelts 13 contentTypeFilters = (agencyConst.CONTENTTYPE_SUGGESTED, agencyConst.CONTENTTYPE_MINING) 14 __notifyevents__ = BaseContentProvider.__notifyevents__ + ['OnSessionChanged'] 15 16 def __init__(self): 17 self.validSolarSystemIDs = [] 18 super(ContentProviderAsteroidBelts, self).__init__() 19 20 def OnSessionChanged(self, isRemote, sess, change): 21 if 'solarsystemid' in change: 22 self.InvalidateSystemCache() 23 24 def InvalidateSystemCache(self): 25 self.validSolarSystemIDs = [] 26 27 def OnAgencyFilterChanged(self, contentGroupID, filterType, value): 28 if contentGroupID != self.contentGroup: 29 return 30 self.InvalidateSystemCache() 31 super(ContentProviderAsteroidBelts, self).OnAgencyFilterChanged(contentGroupID, filterType, value) 32 33 @telemetry.ZONE_METHOD 34 def _ConstructContentPieces(self): 35 if not self.validSolarSystemIDs: 36 self.validSolarSystemIDs = self.GetValidSolarSystemIDs()[:agencyConst.MAX_CONTENT_PIECES_MAX] 37 self.ExtendContentPieces([ self.ConstructSystemContentPiece(solarSystemID) for solarSystemID in self.validSolarSystemIDs ]) 38 39 def ConstructSystemContentPiece(self, solarSystemID): 40 return AsteroidBeltSystemContentPiece(solarSystemID=solarSystemID, itemID=solarSystemID) 41 42 def GetValidSolarSystemIDs(self): 43 return [ solarSystemID for solarSystemID in self.GetAllSolarSystemIDsWithinJumpRange() if self.CheckSystemCriteria(solarSystemID) ] 44 45 def CheckSystemCriteria(self, solarSystemID): 46 return self.CheckSystemHasBelts(solarSystemID) and self.CheckDistanceCriteria(solarSystemID) and self.CheckSecurityStatusFilterCriteria(solarSystemID) and self.CheckOreTypeCriteria(solarSystemID) 47 48 def CheckSystemHasBelts(self, solarSystemID): 49 return bool(get_asteroid_types_by_solar_system(solarSystemID)) 50 51 def CheckOreTypeCriteria(self, solarSystemID): 52 selectedOreType = agencyFilters.GetFilterValue(self.contentGroup, agencyConst.FILTERTYPE_ORETYPE) 53 if selectedOreType == agencyConst.FILTERVALUE_ANY: 54 return True 55 oreTypesInSystem = get_consolidated_ore_types_in_system(solarSystemID) 56 return selectedOreType in oreTypesInSystem