shipConfigSvc.py (3091B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\services\shipConfigSvc.py 2 import locks 3 from caching.memoize import Memoize 4 from carbon.common.script.sys.service import Service 5 from eve.common.script.net import eveMoniker 6 from eve.common.script.sys import eveCfg 7 8 class ShipConfigSvc(Service): 9 __guid__ = 'svc.shipConfig' 10 __update_on_reload__ = 1 11 __dependencies__ = [] 12 __notifyevents__ = ['OnSessionChanged'] 13 __startupdependencies__ = [] 14 15 def __init__(self): 16 self._ship = None 17 self.shipid = None 18 self.config = None 19 super(self.__class__, self).__init__() 20 21 def Run(self, memstream_which_absolutely_noone_uses_anymore_but_no_one_gets_around_to_remove = None): 22 self.shipid = eveCfg.GetActiveShip() 23 24 def _ClearCachedAttributes(self): 25 self.shipid = eveCfg.GetActiveShip() 26 self.config = None 27 self._ship = None 28 29 def OnSessionChanged(self, isRemote, session, change): 30 if 'locationid' in change or 'shipid' in change: 31 self._ClearCachedAttributes() 32 33 @property 34 def ship(self): 35 if self._ship is None: 36 self._ship = eveMoniker.GetShipAccess() 37 return self._ship 38 39 @Memoize(0.25) 40 def GetShipConfig(self, shipID = None): 41 if shipID is not None: 42 return eveMoniker.GetShipAccess().GetShipConfiguration(shipID) 43 if eveCfg.GetActiveShip() != self.shipid: 44 self._ClearCachedAttributes() 45 with locks.TempLock('%s:%s' % (self, self.shipid)): 46 if self.config is None: 47 self.config = self.ship.GetShipConfiguration(self.shipid) 48 return self.config 49 50 def SetShipConfig(self, key, value): 51 lock = locks.TempLock('%s:%s' % (self, self.shipid)) 52 if lock.lockedWhen is not None: 53 return 54 with lock: 55 self.ship.ConfigureShip({key: value}) 56 self.config[key] = value 57 self.GetShipConfig.clear_memoized(self, None) 58 59 def ToggleFleetHangarFleetAccess(self): 60 self.SetShipConfig('FleetHangar_AllowFleetAccess', not self.IsFleetHangarFleetAccessAllowed()) 61 62 def ToggleFleetHangarCorpAccess(self): 63 self.SetShipConfig('FleetHangar_AllowCorpAccess', not self.IsFleetHangarCorpAccessAllowed()) 64 65 def ToggleShipMaintenanceBayFleetAccess(self): 66 self.SetShipConfig('SMB_AllowFleetAccess', not self.IsShipMaintenanceBayFleetAccessAllowed()) 67 68 def ToggleShipMaintenanceBayCorpAccess(self): 69 self.SetShipConfig('SMB_AllowCorpAccess', not self.IsShipMaintenanceBayCorpAccessAllowed()) 70 71 def IsFleetHangarFleetAccessAllowed(self): 72 return self.GetShipConfig()['FleetHangar_AllowFleetAccess'] 73 74 def IsFleetHangarCorpAccessAllowed(self): 75 return self.GetShipConfig()['FleetHangar_AllowCorpAccess'] 76 77 def IsShipMaintenanceBayFleetAccessAllowed(self): 78 return self.GetShipConfig()['SMB_AllowFleetAccess'] 79 80 def IsShipMaintenanceBayCorpAccessAllowed(self): 81 return self.GetShipConfig()['SMB_AllowCorpAccess']