weaponIcons.py (4977B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\inflight\bracketsAndTargets\weaponIcons.py 2 import fighters 3 from carbonui.primitives.container import Container 4 import carbonui.const as uiconst 5 from eve.client.script.ui.control.eveIcon import Icon 6 from eve.client.script.ui.inflight.moduleEffectTimer import ModuleEffectTimer 7 from eve.client.script.ui.inflight.squadrons.shipFighterState import GetShipFighterState 8 from eve.client.script.ui.inflight.squadrons.squadronManagementCont import SquadronNumber 9 from fighters import GetAbilityIDForSlot 10 from localization import GetByLabel 11 import blue 12 from carbonui.uicore import uicore 13 14 class FighterAbilityWeapon(Container): 15 default_width = 32 16 default_height = 32 17 default_align = uiconst.RELATIVE 18 default_state = uiconst.UI_HIDDEN 19 20 def ApplyAttributes(self, attributes): 21 Container.ApplyAttributes(self, attributes) 22 fighterID = attributes.fighterID 23 abilitySlotID = attributes.abilitySlotID 24 fighterState = GetShipFighterState() 25 fighter = fighterState.GetFighterInSpaceByID(fighterID) 26 fighterTypeID = fighter.typeID 27 abilityID = GetAbilityIDForSlot(fighterTypeID, abilitySlotID) 28 abilityInfo = fighters.AbilityStorage()[abilityID] 29 abilityIconID = abilityInfo.iconID 30 self.icon = Icon(parent=self, align=uiconst.TOALL, width=0, height=0, state=uiconst.UI_NORMAL, icon=abilityIconID) 31 self.sr.moduleID = (fighterID, abilitySlotID) 32 self.sr.fighterID = fighterID 33 self.sr.abilitySlotID = abilitySlotID 34 self.icon.sr.fighterID = fighterID 35 self.icon.sr.abilitySlotID = abilitySlotID 36 self.icon.OnClick = self.ClickWeapon 37 squadronNumber = SquadronNumber(parent=self, top=-2, left=-4, idx=0) 38 squadronNumber.SetColor() 39 squadronNumber.SetText(fighter.tubeFlagID) 40 41 def ClickWeapon(self): 42 fighterID, abilitySlotID = self.sr.moduleID 43 sm.GetService('fighters').DeactivateAbilitySlots([fighterID], abilitySlotID) 44 45 46 class Weapon(Container): 47 default_width = 32 48 default_height = 32 49 default_align = uiconst.RELATIVE 50 default_state = uiconst.UI_HIDDEN 51 timerRightCounterTexturePath = 'res:/UI/Texture/classes/Target/ecmCounterRight.png' 52 timerLeftCounterTexturePath = 'res:/UI/Texture/classes/Target/ecmCounterLeft.png' 53 timerCounterGaugeTexturePath = 'res:/UI/Texture/classes/Target/ecmCounterGauge.png' 54 55 def ApplyAttributes(self, attributes): 56 Container.ApplyAttributes(self, attributes) 57 moduleInfo = attributes.moduleInfo 58 self.getJammingInfoFunc = attributes.getJammingInfoFunc 59 icon = Icon(parent=self, align=uiconst.TOALL, width=0, height=0, state=uiconst.UI_NORMAL, typeID=moduleInfo.typeID) 60 self.sr.moduleID = moduleInfo.itemID 61 self.icon = icon 62 icon.sr.moduleID = moduleInfo.itemID 63 icon.OnClick = self.ClickWeapon 64 icon.OnMouseEnter = self.OnMouseEnterWeapon 65 icon.OnMouseExit = self.OnMouseExitWeapon 66 icon.OnMouseHover = self.OnMouseHoverWeapon 67 if moduleInfo.groupID == const.groupElectronicCounterMeasures: 68 icon.baseAlpha = 0.3 69 else: 70 icon.baseAlpha = 1.0 71 icon.SetAlpha(icon.baseAlpha) 72 self.timer = ModuleEffectTimer(parent=self, blink=True, timerRightCounterTexturePath=self.timerRightCounterTexturePath, timerLeftCounterTexturePath=self.timerLeftCounterTexturePath, timerCounterGaugeTexturePath=self.timerCounterGaugeTexturePath) 73 74 def ClickWeapon(self): 75 module = GetModuleFromID(self.sr.moduleID) 76 if module: 77 module.Click() 78 79 def OnMouseEnterWeapon(self): 80 moduleID = self.sr.moduleID 81 module = GetModuleFromID(moduleID) 82 if module is not None: 83 module.InitHilite() 84 module.sr.hilite.display = True 85 sm.GetService('bracket').ShowHairlinesForModule(moduleID, reverse=True) 86 87 def OnMouseExitWeapon(self): 88 moduleID = self.sr.moduleID 89 module = GetModuleFromID(moduleID) 90 if module is not None: 91 module.RemoveHilite() 92 sm.GetService('bracket').StopShowingModuleRange(moduleID) 93 94 def OnMouseHoverWeapon(self): 95 if not self.getJammingInfoFunc: 96 return 97 jammingInfo = self.getJammingInfoFunc(self.sr.moduleID) 98 if jammingInfo is None: 99 self.SetIconHint('') 100 return 101 now = blue.os.GetSimTime() 102 timeSinceStart = now - jammingInfo.startTime 103 timeLeft = jammingInfo.duration - timeSinceStart / 10000 104 hintText = GetByLabel('UI/Inflight/Target/ECMTimeLeft', secondsLeft=timeLeft / 1000) 105 self.SetIconHint(hintText) 106 107 def SetIconHint(self, hintText): 108 self.icon.hint = hintText 109 110 111 def GetModuleFromID(moduleID): 112 if not uicore.layer.shipui: 113 return 114 module = uicore.layer.shipui.GetModule(moduleID) 115 return module