contentProviderESS.py (5238B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\agencyNew\contentProviders\contentProviderESS.py 2 import appConst 3 import telemetry 4 import blue 5 from gametime import GetWallclockTime, SEC 6 from eve.client.script.ui.shared.agencyNew import agencyConst, agencyFilters, agencySignals 7 from eve.client.script.ui.shared.agencyNew.contentGroups import contentGroupConst 8 from eve.client.script.ui.shared.agencyNew.contentPieces.essSystemContentPiece import ESSSystemContentPiece 9 from eve.client.script.ui.shared.agencyNew.contentProviders.baseContentProvider import BaseContentProvider 10 RESERVE_BANK_UNLOCKED_KEY = 'vaultOpen' 11 MAIN_BANK_AMOUNT_KEY = 'mainValue' 12 RESERVE_BANK_AMOUNT_KEY = 'reserveValue' 13 ESS_BOUNTY_OUTPUT_KEY = 'currentOutput' 14 MIN_REFRESH_INTERVAL_SECONDS = 30 15 16 class ContentProviderESS(BaseContentProvider): 17 contentType = agencyConst.CONTENTTYPE_ESS 18 contentGroup = contentGroupConst.contentGroupESSSystems 19 20 def __init__(self): 21 super(ContentProviderESS, self).__init__() 22 agencySignals.on_content_group_selected.connect(self.Refresh) 23 self.lastRefresh = GetWallclockTime() 24 25 def Refresh(self, contentID, *args, **kwargs): 26 if contentID == contentGroupConst.contentGroupESSSystems: 27 if (GetWallclockTime() - self.lastRefresh) / SEC > MIN_REFRESH_INTERVAL_SECONDS: 28 self.lastRefresh = GetWallclockTime() 29 self.InvalidateContentPieces() 30 31 @telemetry.ZONE_METHOD 32 def _ConstructContentPieces(self): 33 essDataBySolarSystemID = self._GetSolarSystemsWithESS() 34 essDataBySolarSystemID = {solarSystemID:essData for solarSystemID, essData in essDataBySolarSystemID.iteritems() if self.CheckSystemCriteria(solarSystemID, essData)} 35 for solarSystemID, essData in essDataBySolarSystemID.iteritems(): 36 contentPiece = self.ConstructSystemContentPiece(solarSystemID=solarSystemID, bountiesOutput=essData[ESS_BOUNTY_OUTPUT_KEY], mainBankAmount=essData[MAIN_BANK_AMOUNT_KEY], reserveBankAmount=essData[RESERVE_BANK_AMOUNT_KEY], reserveBankUnlocked=essData[RESERVE_BANK_UNLOCKED_KEY]) 37 self.AppendContentPiece(contentPiece) 38 blue.pyos.BeNice() 39 if self.contentPieces and len(self.contentPieces) >= 32: 40 break 41 42 def _GetSolarSystemsWithESS(self): 43 return sm.RemoteSvc('dynamicResourceCacheMgr').GetESSAgencyData() 44 45 @telemetry.ZONE_METHOD 46 def ConstructSystemContentPiece(self, solarSystemID, bountiesOutput, mainBankAmount, reserveBankAmount, reserveBankUnlocked): 47 return ESSSystemContentPiece(solarSystemID=solarSystemID, typeID=appConst.typeSolarSystem, itemID=solarSystemID, bountiesOutput=bountiesOutput, mainBankAmount=mainBankAmount, reserveBankAmount=reserveBankAmount, reserveBankUnlocked=reserveBankUnlocked) 48 49 @telemetry.ZONE_METHOD 50 def CheckSystemCriteria(self, solarSystemID, essData): 51 return self.CheckDistanceCriteria(solarSystemID) and self.CheckBountiesOutputCriteria(essData) and self.CheckMainBankAmountCriteria(essData) and self.CheckReserveBankUnlockedCriteria(essData) and self.CheckReserveBankAmountCriteria(essData) 52 53 def CheckBountiesOutputCriteria(self, essData): 54 if not self._IsBountiesOutputFilterActive(): 55 return True 56 minBountiesOutput = self._GetFilterValue(agencyConst.FILTERTYPE_ESSMINBOUNTY) 57 maxBountiesOutput = self._GetFilterValue(agencyConst.FILTERTYPE_ESSMAXBOUNTY) 58 systemBountyOutput = essData[ESS_BOUNTY_OUTPUT_KEY] * 100.0 59 return int(minBountiesOutput) <= systemBountyOutput <= int(maxBountiesOutput) 60 61 def CheckMainBankAmountCriteria(self, essData): 62 if not self._IsMainBankAmountFilterActive(): 63 return True 64 minMainBankAmount = self._GetFilterValue(agencyConst.FILTERTYPE_ESSMINMAINBANKAMOUNT) 65 actualBankAmount = essData[MAIN_BANK_AMOUNT_KEY] 66 return actualBankAmount >= minMainBankAmount 67 68 def CheckReserveBankUnlockedCriteria(self, essData): 69 if not self._IsReserveBankUnlockedFilterActive(): 70 return True 71 reserveBankUnlocked = essData[RESERVE_BANK_UNLOCKED_KEY] 72 return reserveBankUnlocked 73 74 def CheckReserveBankAmountCriteria(self, essData): 75 if not self._IsReserveBankAmountFilterActive(): 76 return True 77 minReserveBankAmount = self._GetFilterValue(agencyConst.FILTERTYPE_ESSMINRESERVEBANKAMOUNT) 78 actualBankAmount = essData[RESERVE_BANK_AMOUNT_KEY] 79 return actualBankAmount >= minReserveBankAmount 80 81 def _IsMainBankAmountFilterActive(self): 82 return self._GetFilterValue(agencyConst.FILTERTYPE_ESSMINMAINBANKAMOUNTFILTERENABLED) 83 84 def _IsReserveBankAmountFilterActive(self): 85 return self._GetFilterValue(agencyConst.FILTERTYPE_ESSMINRESERVEBANKAMOUNTFILTERENABLED) 86 87 def _IsBountiesOutputFilterActive(self): 88 return self._GetFilterValue(agencyConst.FILTERTYPE_ESSBOUNTYFILTERENABLED) 89 90 def _IsReserveBankUnlockedFilterActive(self): 91 return self._GetFilterValue(agencyConst.FILTERTYPE_ESSRESERVEBANKUNLOCKED) 92 93 def _GetFilterValue(self, filterType): 94 return agencyFilters.GetFilterValue(self.contentGroup, filterType)