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

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