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

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)