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

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