benefit_browser.py (3332B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\omega\upsell\components\benefit_browser.py 2 import carbonui 3 import carbonui.text.styles 4 from carbonui import Align, PickState, AxisAlignment, uiconst, TextAlign 5 from carbonui.primitives.container import Container 6 from carbonui.primitives.flowcontainer import FlowContainer 7 from carbonui.primitives.sprite import Sprite 8 from carbonui.uianimations import animations 9 from carbonui.uiconst import OutputMode, BlendMode 10 from eve.client.script.ui import eveColor 11 from localization import GetByMessageID 12 from omega.client.clone_grade_svc import get_clone_grade_svc 13 from signals import Signal 14 15 class BenefitButton(Container): 16 default_width = 80 17 default_height = 100 18 default_state = uiconst.UI_NORMAL 19 default_opacity = 0.5 20 21 def __init__(self, omega_benefit, **kwargs): 22 super(BenefitButton, self).__init__(**kwargs) 23 self.on_clicked = Signal('on_clicked') 24 self._selected = False 25 self.omega_benefit = omega_benefit 26 self.icon = Sprite(parent=self, align=Align.CENTERTOP, pickState=PickState.OFF, texturePath=omega_benefit.icon_path, pos=(0, 0, 48, 48), outputMode=OutputMode.COLOR_AND_GLOW, glowBrightness=0.0, blendMode=BlendMode.ADD) 27 self.label = carbonui.text.styles.TextDetail(parent=self, align=Align.TOTOP, padTop=52, textAlign=TextAlign.CENTER, text=GetByMessageID(omega_benefit.button_message_id), color=eveColor.OMEGA_YELLOW, outputMode=OutputMode.COLOR_AND_GLOW, glowBrightness=0.0, blendMode=BlendMode.ADD) 28 29 def OnClick(self, *args): 30 if self.selected: 31 return 32 self.on_clicked(self.omega_benefit.omega_benefit_type) 33 34 def OnMouseEnter(self, *args): 35 if self.selected: 36 return 37 animations.FadeTo(self, self.opacity, 0.75, duration=uiconst.TIME_ENTRY) 38 39 def OnMouseExit(self): 40 if self.selected: 41 return 42 animations.FadeTo(self, self.opacity, self.default_opacity, duration=uiconst.TIME_EXIT) 43 44 @property 45 def selected(self): 46 return self._selected 47 48 @selected.setter 49 def selected(self, value): 50 self._selected = value 51 self.opacity = 1.0 if value else self.default_opacity 52 self.label.glowBrightness = 0.3 if value else 0.0 53 self.icon.glowBrightness = 0.3 if value else 0.0 54 55 56 class BenefitBrowser(FlowContainer): 57 58 def __init__(self, contentSpacing = (16, 16), contentAlignment = AxisAlignment.CENTER, crossAxisAlignment = AxisAlignment.CENTER, **kwargs): 59 super(BenefitBrowser, self).__init__(contentSpacing=contentSpacing, contentAlignment=contentAlignment, crossAxisAlignment=crossAxisAlignment, **kwargs) 60 self.buttons_by_id = {} 61 self.on_benefit_selected = Signal('on_benefit_selected') 62 benefits = get_clone_grade_svc().get_all_omega_benefits() 63 for omega_benefit in benefits.values(): 64 button = BenefitButton(parent=self, omega_benefit=omega_benefit) 65 button.on_clicked.connect(self.on_benefit_selected) 66 self.buttons_by_id[omega_benefit.omega_benefit_type] = button 67 68 def set_selected(self, omega_benefit_type): 69 for button in self.buttons_by_id.values(): 70 button.selected = button.omega_benefit.omega_benefit_type == omega_benefit_type