contentProviderPirateStronghold.py (2451B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\agencyNew\contentProviders\contentProviderPirateStronghold.py 2 import logging 3 from collections import defaultdict 4 from agency.client.custom_content import get_custom_content_by_content_type 5 from carbon.common.lib import telemetry 6 from eve.client.script.ui.shared.agencyNew import agencyConst, agencyUtil 7 from eve.client.script.ui.shared.agencyNew.contentGroups import contentGroupConst 8 from eve.client.script.ui.shared.agencyNew.contentPieces.pirateStrongholdSystemContentPiece import PirateStrongholdSystemContentPiece 9 from eve.client.script.ui.shared.agencyNew.contentProviders.baseContentProvider import BaseContentProvider 10 from talecommon.const import FOB_TEMPLATES 11 logger = logging.getLogger(__name__) 12 13 class ContentProviderPirateStronghold(BaseContentProvider): 14 contentType = agencyConst.CONTENTTYPE_PIRATE_STRONGHOLD 15 contentGroup = contentGroupConst.contentGroupPirateStrongholds 16 __notifyevents__ = BaseContentProvider.__notifyevents__ + ['OnTaleRemove'] 17 18 def OnTaleRemove(self, taleID, templateClassID, templateID): 19 if templateID in FOB_TEMPLATES: 20 sm.GetService('objectCaching').InvalidateCachedMethodCall('custom_agency_provider', 'get_content_data') 21 self.InvalidateContentPieces() 22 23 @telemetry.ZONE_METHOD 24 def _ConstructContentPieces(self): 25 for solarSystemID, contentDataList in self.GetContentDataBySolarSystemID().iteritems(): 26 if self.CheckDistanceCriteria(solarSystemID) and self.CheckSecurityStatusFilterCriteria(solarSystemID): 27 self.AddContentPiece(solarSystemID, contentDataList) 28 29 self.contentPieces = sorted(self.contentPieces, key=self._GetSortKey) 30 31 def _GetSortKey(self, contentPiece): 32 return contentPiece.GetJumpsToSelfFromCurrentLocation() 33 34 def GetContentDataBySolarSystemID(self): 35 ret = defaultdict(list) 36 for contentData in self.GetPirateStrongholds(): 37 ret[contentData.solar_system_id].append(contentData) 38 39 return ret 40 41 def AddContentPiece(self, solarSystemID, contentDataList): 42 contentPiece = PirateStrongholdSystemContentPiece(itemID=solarSystemID, solarSystemID=solarSystemID, contentDataList=contentDataList) 43 self.AppendContentPiece(contentPiece) 44 45 def GetPirateStrongholds(self): 46 return get_custom_content_by_content_type(self.contentType)