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

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