abilityController.py (2047B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\inflight\squadrons\abilityController.py 2 from eve.client.script.ui.inflight.squadrons.shipFighterState import GetShipFighterState 3 import fighters 4 5 class AbilityController(object): 6 7 def __init__(self, abilityID, fighterID, slotID, fighterTypeID): 8 self.abilityID = abilityID 9 self.fighterID = fighterID 10 self.slotID = slotID 11 self.fighterTypeID = fighterTypeID 12 self.shipFighterState = GetShipFighterState() 13 14 def GetAbilityInfo(self): 15 return fighters.AbilityStorage()[self.abilityID] 16 17 def OnAbilityClick(self, targetMode): 18 if self.shipFighterState.IsAbilityActive(self.fighterID, self.slotID): 19 self.DeactivateAbility() 20 else: 21 self.ActivateAbility(targetMode) 22 23 def ActivateAbility(self, targetMode): 24 if self.fighterID is None: 25 raise RuntimeError('Attempt to activate ability on null fighter') 26 if targetMode == fighters.TARGET_MODE_UNTARGETED: 27 self._OnActivateAbilityOnSelf() 28 elif targetMode == fighters.TARGET_MODE_ITEMTARGETED: 29 targetID = sm.GetService('target').GetActiveTargetID() 30 self._OnActivateAbilityOnTarget(targetID) 31 elif targetMode == fighters.TARGET_MODE_POINTTARGETED: 32 eveCommands = sm.GetService('cmd') 33 eveCommands.CmdAimFighterAbility(self.fighterID, self.slotID) 34 else: 35 raise ValueError('ActivateAbility got unexpected targetmode') 36 37 def DeactivateAbility(self): 38 self._OnDeactivateAbility() 39 40 def _OnActivateAbilityOnTarget(self, targetID): 41 sm.GetService('fighters').ActivateAbilitySlotsOnTarget([self.fighterID], self.slotID, targetID) 42 43 def _OnActivateAbilityOnSelf(self): 44 sm.GetService('fighters').ActivateAbilitySlotsOnSelf([self.fighterID], self.slotID) 45 46 def _OnDeactivateAbility(self): 47 sm.GetService('fighters').DeactivateAbilitySlots([self.fighterID], self.slotID)