systemWideEffectButton.py (5349B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\inflight\shipHud\systemWideEffectButton.py 2 import evetypes 3 import infobubbles 4 import localization 5 import trinity 6 from carbon.common.script.util.timerstuff import AutoTimer 7 from carbonui import uiconst 8 from carbonui.primitives.container import Container 9 from carbonui.primitives.sprite import Sprite 10 from carbonui.uicore import uicore 11 from carbonui.util.color import Color 12 from dogma import units 13 from eve.client.script.ui.control.eveIcon import Icon 14 from eve.client.script.ui.inflight.shipHud.buffButtons import SLOT_WIDTH, ICON_SIZE 15 COLOR_TEXT_HILITE = (1.0, 1.0, 1.0, 1.0) 16 COLOR_GREEN = (0.0, 0.8, 0.0, 1.0) 17 COLOR_RED = (0.875, 0.102, 0.137, 1.0) 18 COLOR_TEXT_HILITE_HEX = Color.RGBtoHex(*COLOR_TEXT_HILITE) 19 COLOR_GREEN_HEX = Color.RGBtoHex(*COLOR_GREEN) 20 COLOR_RED_HEX = Color.RGBtoHex(*COLOR_RED) 21 22 class SystemWideEffectSlotParent(Container): 23 default_align = uiconst.TOLEFT 24 default_width = SLOT_WIDTH 25 default_height = ICON_SIZE 26 27 def ApplyAttributes(self, attributes): 28 Container.ApplyAttributes(self, attributes) 29 self.btn = SystemWideEffectButton(parent=self, align=uiconst.CENTER, width=ICON_SIZE, height=ICON_SIZE, sourceTypeID=attributes.sourceTypeID) 30 self.FadeButtonIn() 31 32 def FadeButtonIn(self): 33 uicore.animations.FadeIn(self, duration=0.25) 34 uicore.animations.MorphScalar(self, 'width', startVal=0, endVal=SLOT_WIDTH, duration=0.25) 35 36 37 class SystemWideEffectButton(Container): 38 __guid__ = 'BuffButton' 39 default_state = uiconst.UI_NORMAL 40 default_align = uiconst.RELATIVE 41 default_pickRadius = -1 42 ICON_BASE_ALPHA = 1.0 43 ICON_HIGHLIGHTED_ALPHA = 1.5 44 ICON_COLOR = (1.0, 45 1.0, 46 1.0, 47 ICON_BASE_ALPHA) 48 SLOT_COLOR = (1.0, 1.0, 1.0, 1) 49 SLOT_TEXTURE_PATH = 'res:/UI/Texture/classes/ShipUI/EwarBar/ewarBarUnderlayClean.png' 50 SLOT_GRADIENT_TEXTURE_PATH = 'res:/UI/Texture/classes/ShipUI/EwarBar/ewarBarUnderlayGrad.png' 51 SLOT_BASE_ALPHA = 0.2 52 SLOT_GRADIENT_ALPHA = 0.25 53 SHADOW_COLOR = (1.0, 1.0, 1.0, 0.25) 54 SHADOW_TEXTURE_PATH = 'res:/UI/Texture/classes/ShipUI/EwarBar/ewarBarShadow.png' 55 56 def ApplyAttributes(self, attributes): 57 Container.ApplyAttributes(self, attributes) 58 self.sourceTypeID = attributes.sourceTypeID 59 iconSize = self.height 60 self.icon = Icon(parent=self, name='SystemEffecticon', pos=(0, 61 0, 62 iconSize, 63 iconSize), align=uiconst.CENTER, state=uiconst.UI_DISABLED, ignoreSize=1, color=self.ICON_COLOR) 64 Sprite(parent=self, name='effect_slot_gradient', align=uiconst.TOALL, state=uiconst.UI_DISABLED, color=self.SLOT_COLOR, blendMode=trinity.TR2_SBM_ADD, texturePath=self.SLOT_GRADIENT_TEXTURE_PATH, opacity=self.SLOT_GRADIENT_ALPHA) 65 Sprite(parent=self, name='effect_slot_base', align=uiconst.TOALL, state=uiconst.UI_DISABLED, color=self.SLOT_COLOR, blendMode=trinity.TR2_SBM_ADD, texturePath=self.SLOT_TEXTURE_PATH, opacity=self.SLOT_BASE_ALPHA) 66 Sprite(parent=self, name='effect_shadow', align=uiconst.TOALL, state=uiconst.UI_DISABLED, color=self.SHADOW_COLOR, texturePath=self.SHADOW_TEXTURE_PATH) 67 self.LoadIcon(infobubbles.get_icon_id(self.sourceTypeID)) 68 69 def LoadIcon(self, graphicID): 70 self.icon.LoadIconByIconID(graphicID) 71 72 def GetHint(self): 73 return '' 74 75 def LoadTooltipPanel(self, tooltipPanel, *args, **kwds): 76 tooltipPanel.LoadGeneric1ColumnTemplate() 77 tooltipPanel.cellSpacing = (10, 4) 78 self._LoadTooltipPanel(tooltipPanel) 79 self._tooltipUpdateTimer = AutoTimer(250, self._LoadTooltipPanel, tooltipPanel) 80 81 def _LoadTooltipPanel(self, tooltipPanel): 82 if tooltipPanel.destroyed: 83 self._tooltipUpdateTimer = None 84 return 85 tooltipPanel.Flush() 86 misc_bonus = infobubbles.get_misc_bonus(self.sourceTypeID) 87 if misc_bonus: 88 tooltipPanel.AddLabelLarge(text=evetypes.GetName(self.sourceTypeID), align=uiconst.CENTERLEFT, color=COLOR_TEXT_HILITE) 89 for bonus in sorted(misc_bonus, key=lambda x: x['importance']): 90 text = self._GetBonusText(bonus) 91 tooltipPanel.AddLabelMedium(text=text, align=uiconst.CENTERLEFT) 92 93 def OnMouseEnter(self, *args): 94 self.icon.SetAlpha(self.ICON_HIGHLIGHTED_ALPHA) 95 96 def OnMouseExit(self, *args): 97 self.icon.SetAlpha(self.ICON_BASE_ALPHA) 98 99 def _GetBonusText(self, data): 100 color = COLOR_TEXT_HILITE_HEX 101 if 'bonus' in data: 102 bonus = float(data['bonus']) 103 value = round(bonus, 1) 104 if int(bonus) == bonus: 105 value = int(bonus) 106 if 'isPositive' in data: 107 isPositive = data['isPositive'] 108 if isPositive: 109 color = COLOR_GREEN_HEX 110 else: 111 color = COLOR_RED_HEX 112 text = localization.GetByLabel('UI/SystemWideEffects/BonusWithNumber', color=color, value=value, unit=units.get_display_name(int(data['unitID'])), bonusText=localization.GetByMessageID(int(data['nameID']))) 113 else: 114 text = localization.GetByLabel('UI/SystemWideEffects/BonusWithoutNumber', color=color, bonusText=localization.GetByMessageID(int(data['nameID']))) 115 return text