warpToEssStatefulButtonController.py (2367B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\dynamicResource\warpToEssStatefulButtonController.py 2 from eve.client.script.ui.const import buttonConst 3 from eve.client.script.ui.control.statefulButtonController import StatefulButtonController 4 from eve.client.script.ui.services.menuSvcExtras.movementFunctions import WarpToItem 5 6 class WarpToEssButtonController(StatefulButtonController): 7 8 def __init__(self): 9 StatefulButtonController.__init__(self) 10 11 def _GetButtonState(self): 12 michelle = sm.GetService('michelle') 13 if michelle.IsPreparingWarp(): 14 return buttonConst.STATE_PREPARING_WARP 15 elif michelle.InWarp(): 16 return buttonConst.STATE_WARPING 17 elif self.IsEssWarpable() and not self.AmIInsideTheEssInstance(): 18 return buttonConst.STATE_WARPTO 19 else: 20 return buttonConst.STATE_NONE 21 22 def GetButtonFunction(self): 23 return self.WarpToEss 24 25 def OnClientEvent_WarpFinished(self, *args): 26 self.SendNewStateSignal() 27 28 def IsEssWarpable(self): 29 dynamicResourceSvc = sm.GetService('dynamicResourceSvc') 30 essDataSource = dynamicResourceSvc.GetESSDataForCurrentSystem() 31 if essDataSource is None: 32 return False 33 beaconID = essDataSource.get('beaconID', None) 34 if beaconID is None: 35 return False 36 michelle = sm.GetService('michelle') 37 ball = michelle.GetBall(beaconID) 38 if ball is None: 39 return False 40 return michelle.IsPositionWithinWarpDistance((ball.x, ball.y, ball.z)) 41 42 def WarpToEss(self, *args): 43 dynamicResourceSvc = sm.GetService('dynamicResourceSvc') 44 essDataSource = dynamicResourceSvc.GetESSDataForCurrentSystem() 45 beaconID = essDataSource.get('beaconID', None) 46 WarpToItem(beaconID) 47 48 def AmIInsideTheEssInstance(self): 49 dynamicResourceSvc = sm.GetService('dynamicResourceSvc') 50 essDataSource = dynamicResourceSvc.GetESSDataForCurrentSystem() 51 essID = essDataSource.get('essID', None) 52 if essID is None: 53 return False 54 else: 55 distance = sm.GetService('michelle').GetBallpark().GetSurfaceDist(session.shipid, essID) 56 if distance is None: 57 return False 58 return True