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

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']