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

expanded_bracket.py (3650B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\inflight\bracketsAndTargets\expanded_bracket.py
      2 import carbonui.text.styles
      3 from carbonui.primitives.sprite import Sprite
      4 import carbonui
      5 import evetypes
      6 import uthread2
      7 from carbon.common.script.util.format import FmtDist
      8 from carbonui import Align, uiconst, PickState, TextColor
      9 from carbonui.primitives.containerAutoSize import ContainerAutoSize
     10 from carbonui.primitives.frame import Frame
     11 from carbonui.primitives.layoutGrid import LayoutGrid
     12 from carbonui.primitives.stretchspritehorizontal import StretchSpriteHorizontal
     13 from carbonui.uianimations import animations
     14 from chroma import Color
     15 from eve.client.script.remote.michelle import GetMichelle
     16 from eve.client.script.ui import eveColor
     17 from eve.client.script.ui.inflight.bracketsAndTargets.bracket_attachment_mixin import BracketAttachmentMixin
     18 from localization import GetByLabel
     19 
     20 def get_label_and_value_formatted(label, value):
     21     label_color = Color(*eveColor.WHITE)
     22     a = TextColor.HIGHLIGHT.a
     23     text_color = Color(a, a, a, 1.0)
     24     return u'<color={}><b>{}</b></color> <color={}>{}</color>'.format(label_color.hex_argb, label, text_color.hex_argb, value)
     25 
     26 
     27 class ExpandedBracket(BracketAttachmentMixin, ContainerAutoSize):
     28     default_alignMode = Align.TOPLEFT
     29     default_state = uiconst.UI_PICKCHILDREN
     30 
     31     def __init__(self, item_id, bracket, **kwargs):
     32         super(ExpandedBracket, self).__init__(bracket=bracket, **kwargs)
     33         self.x_offset = 118
     34         self.y_offset = 60
     35         self.item_id = item_id
     36         self.slim_item = GetMichelle().GetBallpark().GetSlimItem(item_id)
     37         self.construct_layout()
     38         self.main_label.DelegateEvents(bracket)
     39         uthread2.start_tasklet(self.initialize)
     40 
     41     def initialize(self):
     42         self.update()
     43         self.anim_entry()
     44 
     45     def anim_entry(self):
     46         animations.FadeTo(self.callout_line, 0.0, 0.5, duration=0.2)
     47         animations.SpMaskIn(self.callout_line, duration=0.2)
     48         for i, c in enumerate(self.layout_grid.children):
     49             animations.FadeTo(c, 0.0, c.opacity, duration=0.1, timeOffset=0.1 + i * 0.02)
     50 
     51     def construct_layout(self):
     52         self.layout_grid = LayoutGrid(parent=self, align=Align.TOPLEFT, columns=1, cellSpacing=(0, 4), top=8)
     53         self.construct_main_label()
     54         self.construct_labels()
     55         self.callout_line = Sprite(parent=self, name='calloutLine', align=Align.TOPLEFT, texturePath='res:/UI/Texture/classes/Bracket/callout_line_diagonal.png', pos=(-100, -46, 95, 65), opacity=0.0)
     56 
     57     def construct_main_label(self):
     58         label_cont = ContainerAutoSize(name='main_label_cont', parent=self.layout_grid, align=Align.CENTERLEFT)
     59         self.main_label = carbonui.text.styles.TextBody(parent=label_cont, align=uiconst.CENTERLEFT, color=eveColor.WHITE, shadowOffset=(1, 1), text=evetypes.GetName(self.slim_item.typeID), padBottom=4, pickState=PickState.ON)
     60         Frame(bgParent=label_cont, texturePath='res:/UI/Texture/Shared/DarkStyle/panel1CornerTopRight.png', cornerSize=10, opacity=0.2, padding=(-8, -4, -8, 0))
     61 
     62     def construct_labels(self):
     63         self.distance_label = carbonui.text.styles.TextDetail(name='distance_label', parent=self.layout_grid, pickState=PickState.OFF)
     64 
     65     def update(self, is_bracket_floating = True):
     66         self.distance_label.text = self.get_distance_text()
     67         self.display = is_bracket_floating
     68 
     69     def get_distance_text(self):
     70         ball = GetMichelle().GetBall(self.item_id)
     71         if ball:
     72             return get_label_and_value_formatted(GetByLabel('UI/Common/Distance'), FmtDist(ball.surfaceDist))