structureServices.py (2039B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\services\structure\structureServices.py 2 import structures 3 from carbon.common.script.sys.service import Service 4 from eve.client.script.ui.station import stationServiceConst 5 6 class StructureServices(Service): 7 __guid__ = 'svc.structureServices' 8 __notifyevents__ = ['OnSessionChanged', 'OnStructureServiceChanged'] 9 10 def Run(self, *args): 11 self.onlineServices = None 12 self.structureID = None 13 14 def OnSessionChanged(self, isRemote, session, change): 15 if 'structureid' in change and session.structureid: 16 self._FetchOnlineServices() 17 18 def GetPossibleStructureServices(self): 19 return structures.SERVICES_ACCESS_SETTINGS.keys() 20 21 def CharacterGetServices(self, structureID): 22 if structureID == session.structureid: 23 if self.onlineServices is None or self.structureID != session.structureid: 24 self._FetchOnlineServices() 25 return self.onlineServices 26 return sm.RemoteSvc('structureSettings').CharacterGetServices(structureID) 27 28 def IsServiceAvailableForCharacter(self, serviceID): 29 if serviceID in structures.ONLINE_SERVICES_UNRESTRICTED_ACCESS: 30 return True 31 if serviceID == stationServiceConst.serviceIDAlwaysPresent: 32 return True 33 if serviceID in self.CharacterGetServices(session.structureid): 34 return True 35 if serviceID == structures.SERVICE_INDUSTRY: 36 return bool(structures.INDUSTRY_SERVICES & set(self.onlineServices.keys())) 37 38 def OnStructureServiceChanged(self, structureID): 39 if structureID == session.structureid: 40 self._FetchOnlineServices() 41 sm.ScatterEvent('OnStructureServiceUpdated') 42 43 def _FetchOnlineServices(self): 44 if session.structureid is not None: 45 self.onlineServices = sm.RemoteSvc('structureSettings').CharacterGetServices(session.structureid) 46 self.structureID = session.structureid