controller.py (4375B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\infoPanels\essUI\controller.py 2 import blue 3 from carbon.common.lib.const import SEC 4 from dynamicresources.common.ess.formulas import GetPayout 5 MAIN_BANK_IDLE = 1 6 MAIN_BANK_HACKING = 2 7 RESERVE_BANK_LOCKED = 3 8 RESERVE_BANK_UNLOCKED = 4 9 10 class InfoPanelESSStateController: 11 12 def __init__(self): 13 self.dynamicResourceService = sm.GetService('dynamicResourceSvc') 14 self._cache_manager = sm.RemoteSvc('dynamicResourceCacheMgr') 15 self._essData = None 16 self.essSettings = None 17 self.RefreshEssData() 18 19 def RefreshEssData(self): 20 self._essData = self.dynamicResourceService.GetESSDataForCurrentSystem() 21 self.essSettings = self._cache_manager.GetDynamicResourceSettings() 22 if self._essData and self.essSettings: 23 return True 24 else: 25 return False 26 27 def GetEssData(self): 28 return self._essData 29 30 def Get(self, field, default = None): 31 return self._essData.get(field, default) 32 33 def GetSetting(self, field, default = None): 34 return self.essSettings.get(field, default) 35 36 def GetEnumeratedMainBankState(self): 37 if self._is_main_bank_in_linked_state(): 38 return MAIN_BANK_HACKING 39 else: 40 return MAIN_BANK_IDLE 41 42 def GetEnumeratedReserveBankState(self): 43 pulsesRemaining = self._essData.get('reserveBankPulsesRemaining') 44 if pulsesRemaining > 0: 45 return RESERVE_BANK_UNLOCKED 46 else: 47 return RESERVE_BANK_LOCKED 48 49 def GetMainBankLinkState(self): 50 if not self._is_main_bank_in_linked_state(): 51 return 52 linkedCharID = self._essData.get('mainBankLink', {}).get('characterID', None) 53 return {'this_client': linkedCharID == session.charid, 54 'link': self._essData.get('mainBankLink', {})} 55 56 def GetTimeLeftForMainBankHack(self): 57 currentSimTime = blue.os.GetSimTime() 58 linkState = self._essData.get('mainBankLink', {}) 59 completesAt = linkState.get('completesAt', None) 60 if completesAt is None: 61 return 0 62 return max(0, completesAt - currentSimTime) 63 64 def GetProportionOfTimeLeftForMainBankHack(self): 65 linkState = self._essData.get('mainBankLink', {}) 66 completesAt = linkState.get('completesAt', None) 67 if completesAt is None: 68 return 0.0 69 currentSimTime = blue.os.GetSimTime() 70 hackTime = float(self.GetSetting('bufferTimeSeconds')) * SEC 71 return (completesAt - currentSimTime) / hackTime 72 73 def CalculateReserveBankPayouts(self): 74 windowAccessFactor = self.GetSetting('reserveWindowAccessFactor') 75 exponentLead = self.GetSetting('reservePayoutExponentLead') 76 exponentTail = self.GetSetting('reservePayoutExponentTail') 77 payoutPaddingValue = self.GetSetting('reservePayoutPaddingValue') 78 reserveBankMaxPayout = self.GetSetting('reserveBankMaxPayout') 79 pulsesTotal = self.Get('reserveBankPulsesTotal') 80 pulseValues = [ GetPayout(pulseNumber + 1, pulsesTotal, windowAccessFactor, reserveBankMaxPayout, exponentLead, exponentTail, payoutPaddingValue) for pulseNumber in xrange(pulsesTotal) ] 81 return pulseValues 82 83 def GetCurrentReserveBankPulsePayout(self): 84 windowAccessFactor = self.GetSetting('reserveWindowAccessFactor') 85 exponentLead = self.GetSetting('reservePayoutExponentLead') 86 exponentTail = self.GetSetting('reservePayoutExponentTail') 87 payoutPaddingValue = self.GetSetting('reservePayoutPaddingValue') 88 reserveBankMaxPayout = self.GetSetting('reserveBankMaxPayout') 89 pulsesRemaining = self.Get('reserveBankPulsesRemaining') 90 pulsesTotal = self.Get('reserveBankPulsesTotal') 91 currentPulseNumber = pulsesTotal - pulsesRemaining + 1 92 amountInBank = self.Get('reserveValue', 0.0) 93 maxPayoutThisPulse = GetPayout(currentPulseNumber, pulsesTotal, windowAccessFactor, reserveBankMaxPayout, exponentLead, exponentTail, payoutPaddingValue) 94 return min(maxPayoutThisPulse, amountInBank) 95 96 def _is_main_bank_in_linked_state(self): 97 linkedChar = self._essData.get('mainBankLink', {}).get('characterID', None) 98 if linkedChar: 99 return True 100 else: 101 return False