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

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)