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

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)