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

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