cleanupWndController.py (5696B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\sov\sovHub\skyhooksCleanup\cleanupWndController.py 2 import gametime 3 from eve.client.script.ui.shared.sov.sovHub.skyhooksCleanup.cleanupSkyhookEntryController import CleanupSkyhookEntryController 4 from eve.common.script.sys.idCheckers import IsNPCCorporation 5 from eveexceptions import ExceptionEater 6 from signals import Signal 7 from signals.signalUtil import ConnectSignals, DisconnectSignals 8 from sovereignty.hub.const import SKYHOOK_CLAIM_FEE, ALLOWED_DURATION_AFTER_SOVHUB_CLAIM 9 10 class CleanupSovSystemWindowController(object): 11 12 def __init__(self, skyhookSlimItems): 13 self._entryControllers = self._SetEntryControllers(skyhookSlimItems) 14 self.on_any_entry_updated = Signal(signalName='on_any_entry_updated') 15 self._accessGroupOptions = None 16 signalsAndCallbacks = self.GetSignalsAndCallbacks() 17 ConnectSignals(signalsAndCallbacks) 18 19 def GetSignalsAndCallbacks(self): 20 ret = [] 21 for c in self._entryControllers.itervalues(): 22 ret.append((c.on_entry_updated, self.OnEntryUpdated)) 23 ret.append((c.on_mode_updated, self.OnEntryUpdated)) 24 25 return ret 26 27 def _SetEntryControllers(self, skyhookSlimItems): 28 ret = {} 29 for slimItem in skyhookSlimItems: 30 controller = CleanupSkyhookEntryController(slimItem, wndContoller=self) 31 ret[slimItem.itemID] = controller 32 33 return ret 34 35 def GetEntryControllers(self): 36 return self._entryControllers 37 38 def GetNumChecked(self): 39 numChecked = len([ x for x in self._entryControllers.itervalues() if x.IsChecked() ]) 40 return numChecked 41 42 def GetNumUnprocessedAndUnchecked(self): 43 numChecked = len([ x for x in self._entryControllers.itervalues() if not x.IsChecked() and not x.IsProcessed() ]) 44 return numChecked 45 46 def GetNumAcquiringAndPrice(self): 47 numAcquiring = len(self.GetSkyhooksToAcquire()) 48 price = numAcquiring * self.GetClaimFee() 49 return (numAcquiring, price) 50 51 def GetClaimFee(self): 52 return SKYHOOK_CLAIM_FEE 53 54 def GetSkyhooksToAcquire(self): 55 return [ x.itemID for x in self._entryControllers.itervalues() if x.IsChecked() and x.IsInAcquireMode() and not x.IsProcessed() ] 56 57 def GetNumDestroyingAndPrice(self): 58 numDestroying = len(self.GetSkyhooksToDestroy()) 59 return (numDestroying, 0) 60 61 def GetSkyhooksToDestroy(self): 62 return [ x.itemID for x in self._entryControllers.itervalues() if x.IsChecked() and x.IsInDestroyMode() and not x.IsProcessed() ] 63 64 def GetNumNotAffectedAndPrice(self): 65 numUnchecked = len([ x for x in self._entryControllers.itervalues() if not x.IsChecked() ]) 66 return (numUnchecked, 0) 67 68 def GetTotalPrice(self): 69 _, price = self.GetNumAcquiringAndPrice() 70 return price 71 72 def GetCorpWalletBalance(self): 73 return sm.GetService('wallet').GetCorpWealth() 74 75 def ToggleAllAvailable(self): 76 numUnchecked = self.GetNumUnprocessedAndUnchecked() 77 if numUnchecked: 78 newValue = True 79 else: 80 newValue = False 81 entryControllers = self.GetEntryControllers() 82 for controller in entryControllers.itervalues(): 83 if controller.IsProcessed(): 84 continue 85 controller.SetCheckedValue(newValue) 86 87 def OnEntryUpdated(self, *args): 88 self.on_any_entry_updated() 89 90 @property 91 def accessGroupOptions(self): 92 if self._accessGroupOptions is None: 93 from eve.client.script.ui.inflight.orbitalConfiguration import GetAccessGroupOptions 94 self._accessGroupOptions = GetAccessGroupOptions() 95 return self._accessGroupOptions 96 97 def AddGroup(self, newGroupID, raiseGroupNotFound = True): 98 if newGroupID: 99 try: 100 newGroup = sm.GetService('structureControllers').GetAccessGroupController().GetGroupInfoFromID(newGroupID, fetchToServer=True) 101 except UserError as e: 102 if e.msg == 'GroupNotFound' and not raiseGroupNotFound: 103 return 104 raise 105 106 groupDisplayName = cfg.eveowners.Get(newGroup.creatorID).name if IsNPCCorporation(newGroup.creatorID) else newGroup.name 107 self._accessGroupOptions.append((groupDisplayName, newGroupID)) 108 109 def GetDeadlineTimestamp(self): 110 hub_info = sm.GetService('sov').GetInfrastructureHubInfo(session.solarsystemid2) 111 end_time = hub_info.claimTime + gametime.SEC * ALLOWED_DURATION_AFTER_SOVHUB_CLAIM 112 return end_time 113 114 def ProcessSkyhooks(self, accessListID): 115 skyhooksToAcquire = self.GetSkyhooksToAcquire() 116 skyhooksToDestroy = self.GetSkyhooksToDestroy() 117 sovSvc = sm.GetService('sov') 118 acquiredSkyhookIDs = [] 119 destroyedSkyhookIDs = [] 120 success = False 121 try: 122 acquiredSkyhookIDs = sovSvc.AcquireSkyhooks(skyhooksToAcquire, accessListID) 123 destroyedSkyhookIDs = sovSvc.DestroySkyhooks(skyhooksToDestroy) 124 success = True 125 finally: 126 for controller in self.GetEntryControllers().itervalues(): 127 processedSkyhooks = acquiredSkyhookIDs + destroyedSkyhookIDs 128 if controller.itemID in processedSkyhooks: 129 controller.processedValue = True 130 131 return (acquiredSkyhookIDs, destroyedSkyhookIDs, success) 132 133 def __del__(self): 134 with ExceptionEater('Deleting CleanupSovSystemWindowController'): 135 signalsAndCallbacks = self.GetSignalsAndCallbacks() 136 DisconnectSignals(signalsAndCallbacks)