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

header.py (3839B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\achievement_system\client\ui\window\card\components\header.py
      2 import threadutils
      3 from achievement_system.client.ui.window.card.components.archived import AchievementArchived
      4 from achievement_system.client.ui.window.card.components.expiry import AchievementExpiryTimer
      5 from achievement_system.client.ui.window.card.components.icon import AchievementIcon
      6 from carbonui import Align, TextColor
      7 from carbonui.primitives.container import Container
      8 from carbonui.primitives.containerAutoSize import ContainerAutoSize
      9 from carbonui.primitives.stretchspritehorizontal import StretchSpriteHorizontal
     10 from carbonui.text.styles import TextBody, TextCustom
     11 from eve.client.script.ui import eveThemeColor
     12 CIRCLE_SIZE = 164
     13 
     14 class AchievementHeader(Container):
     15     default_height = CIRCLE_SIZE
     16 
     17     def __init__(self, controller, *args, **kwargs):
     18         super(AchievementHeader, self).__init__(*args, **kwargs)
     19         self.controller = controller
     20         self.construct_layout()
     21         self.update()
     22 
     23     def construct_layout(self):
     24         left_container = Container(name='left_container', parent=self, align=Align.TOLEFT, width=CIRCLE_SIZE, height=CIRCLE_SIZE)
     25         self.icon = AchievementIcon(name='icon', parent=left_container, align=Align.CENTER, controller=self.controller)
     26         right_container = ContainerAutoSize(name='right_container', parent=self, align=Align.TOTOP, alignMode=Align.TOTOP)
     27         right_container.on_size_changed.connect(self.on_right_container_size_changed)
     28         if self.controller.is_time_limited:
     29             expiry_container = Container(name='expiry_container', parent=right_container, align=Align.TOTOP_NOPUSH, height=16, top=32, padLeft=16)
     30             AchievementExpiryTimer(name='expiry_timer', parent=expiry_container, align=Align.CENTERLEFT, controller=self.controller)
     31         elif self.controller.is_historic:
     32             archived_container = Container(name='archived_container', parent=right_container, align=Align.TOTOP, height=16, top=12)
     33             AchievementArchived(name='archived', parent=archived_container, align=Align.CENTERLEFT)
     34         self.name_plate = NamePlate(name='name_plate', parent=right_container, align=Align.TOTOP, controller=self.controller)
     35         self.description_label = TextBody(name='description_label', parent=right_container, align=Align.TOTOP, padding=(16, -50, 16, 0))
     36 
     37     def on_right_container_size_changed(self, width, height):
     38         self.height = max(self.default_height, height)
     39 
     40     @threadutils.highlander_threaded
     41     def update(self):
     42         self.icon.update()
     43         self.name_plate.update()
     44         self.description_label.text = self.controller.description_for_selected_milestone
     45 
     46 
     47 class NamePlate(Container):
     48     default_height = CIRCLE_SIZE
     49 
     50     def __init__(self, controller, *args, **kwargs):
     51         super(NamePlate, self).__init__(*args, **kwargs)
     52         self.controller = controller
     53         self.construct_layout()
     54         self.update()
     55 
     56     def construct_layout(self):
     57         self.decoration = StretchSpriteHorizontal(name='decoration', parent=self, texturePath='res:/UI/Texture/classes/Achievements/card/expanded_header_ring.png', leftEdgeSize=164, rightEdgeSize=4, width=542 - CIRCLE_SIZE, height=self.default_height, padLeft=-CIRCLE_SIZE)
     58         self.label = TextCustom(name='label', parent=self, align=Align.CENTERLEFT, color=TextColor.HIGHLIGHT, fontsize=18, padLeft=16)
     59 
     60     @threadutils.highlander_threaded
     61     def update(self):
     62         self.label.text = self.controller.name
     63         self.update_color()
     64 
     65     def update_color(self):
     66         self.decoration.color = eveThemeColor.THEME_FOCUS
     67         self.decoration.opacity = 0.2
     68 
     69     def OnColorThemeChanged(self):
     70         super(NamePlate, self).OnColorThemeChanged()
     71         self.update_color()