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

anchoring.py (2550B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\environment\effects\anchoring.py
      2 from eve.client.script.environment.effects.GenericEffect import GenericEffect, STOP_REASON_DEFAULT, STOP_REASON_BALL_REMOVED
      3 
      4 class AnchoringEffect(GenericEffect):
      5 
      6     def __init__(self, trigger, *args):
      7         GenericEffect.__init__(self, trigger, *args)
      8         if trigger.moduleID is not None and trigger.moduleID != trigger.shipID:
      9             self.ballIDs = [trigger.moduleID]
     10         else:
     11             self.ballIDs = [trigger.shipID]
     12         self.fxSequencer = sm.GetService('FxSequencer')
     13         self.gfx = None
     14 
     15     def SetState(self, stateName):
     16         ballID = self.ballIDs[0]
     17         ball = self.fxSequencer.GetBall(ballID)
     18         if hasattr(ball, 'SetColor'):
     19             ball.SetColor(stateName)
     20 
     21 
     22 class AnchorDrop(AnchoringEffect):
     23     __guid__ = 'effects.AnchorDrop'
     24 
     25     def Start(self, duration):
     26         ballID = self.ballIDs[0]
     27         ball = self.fxSequencer.GetBall(ballID)
     28         if ball is None:
     29             return
     30         if hasattr(ball, 'BeginStructureAnchoring'):
     31             self.fxSequencer.LogInfo('AnchorDrop: calling BeginStructureAnchoring')
     32             ball.BeginStructureAnchoring(self.timeFromStart)
     33         else:
     34             self.SetState('yellow')
     35             AnchoringEffect.Start(self, duration)
     36 
     37     def Stop(self, reason = STOP_REASON_DEFAULT):
     38         ballID = self.ballIDs[0]
     39         ball = self.fxSequencer.GetBall(ballID)
     40         if ball is None:
     41             return
     42         if not hasattr(ball, 'BeginStructureAnchoring') and reason != STOP_REASON_BALL_REMOVED:
     43             self.SetState('red')
     44             AnchoringEffect.Stop(self)
     45 
     46 
     47 class AnchorLift(AnchoringEffect):
     48     __guid__ = 'effects.AnchorLift'
     49 
     50     def Start(self, duration):
     51         ballID = self.ballIDs[0]
     52         ball = self.fxSequencer.GetBall(ballID)
     53         if ball is None:
     54             return
     55         if hasattr(ball, 'BeginStructureUnAnchoring'):
     56             self.fxSequencer.LogInfo('AnchorDrop: calling BeginStructureUnAnchoring ')
     57             ball.BeginStructureUnAnchoring(self.timeFromStart)
     58         else:
     59             self.SetState('yellow')
     60             AnchoringEffect.Start(self, duration)
     61 
     62     def Stop(self, reason = STOP_REASON_DEFAULT):
     63         ballID = self.ballIDs[0]
     64         ball = self.fxSequencer.GetBall(ballID)
     65         if ball is None:
     66             return
     67         if not hasattr(ball, 'SetCapsuleGraphics'):
     68             self.SetState('green')
     69             AnchoringEffect.Stop(self)