deathzoneSvc.py (1769B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\services\deathzoneSvc.py 2 import gametime 3 from carbon.common.script.sys.service import Service 4 from enum import Enum 5 from eve.client.script.ui.services.deathzone.deathzoneUIController import DeathZoneUIController 6 7 class DeathzoneSvc(Service): 8 __guid__ = 'svc.deathzoneSvc' 9 __displayname__ = 'Deathzone client service' 10 __exportedcalls__ = {'InDeathZone': [], 11 'GetHullDamageFraction': []} 12 __startupdependencies__ = ['machoNet', 'heroNotification', 'sceneManager'] 13 __notifyevents__ = ['OnSessionChanged', 'OnDeathzoneStateUpdate'] 14 placeholderDeathzoneUITasklet = None 15 trackingData = None 16 17 def Run(self, *args, **kwargs): 18 super(DeathzoneSvc, self).Run(*args, **kwargs) 19 self.deathZoneUIController = DeathZoneUIController(self.heroNotification, self.sceneManager) 20 self.trackingData = None 21 22 def InDeathZone(self): 23 return self.trackingData is not None 24 25 def GetHullDamageFraction(self): 26 if self.trackingData: 27 return self.trackingData.GetHullDamageFractionPerTick(gametime.GetSimTime()) 28 return 0.0 29 30 def OnSessionChanged(self, isremote, session, change): 31 if 'solarsystemid2' in change: 32 self.trackingData = None 33 self.deathZoneUIController.Remove() 34 35 def OnDeathzoneStateUpdate(self, solarsystemID, shipID, trackingData): 36 if solarsystemID != session.solarsystemid2 or shipID != session.shipid: 37 return 38 self.trackingData = trackingData 39 if trackingData is None: 40 self.deathZoneUIController.EnterSafeZoneState() 41 else: 42 self.deathZoneUIController.EnterDeathZoneState(trackingData)