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

zoom_container.py (3407B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\theatersOfWar\campaigns\zoom_container.py
      2 import carbonui.const as uiconst
      3 from carbonui import Align, TextColor
      4 from carbonui.primitives.container import Container
      5 from carbonui.primitives.layoutGrid import LayoutGrid
      6 from carbonui.primitives.line import Line
      7 from carbonui.primitives.sprite import Sprite
      8 from carbonui.primitives.transform import Transform
      9 from carbonui.text.styles import TextBody
     10 from carbonui.uianimations import animations
     11 from jobboard.client.features.campaigns.qa_tools import get_qa_menu_for_campaign_zoom_container
     12 
     13 class ZoomContainerInfo(object):
     14 
     15     def __init__(self, content_id, content_name, content_texturePath, content_background_path, content_definition_name, hint = None):
     16         self.content_id = content_id
     17         self.content_name = content_name
     18         self.content_texturePath = content_texturePath
     19         self.content_background_path = content_background_path
     20         self.content_definition_name = content_definition_name
     21         self.hint = hint
     22 
     23 
     24 class ZoomContainer(Container):
     25     default_clipChildren = True
     26     default_state = uiconst.UI_NORMAL
     27     icon_size = 20
     28     grid_cell_padding = 8
     29 
     30     def ApplyAttributes(self, attributes):
     31         self._zoom_container_info = attributes.zoom_container_info
     32         self.callback = attributes.callback
     33         super(ZoomContainer, self).ApplyAttributes(attributes)
     34         self.title_grid = LayoutGrid(parent=self, columns=3, align=Align.CENTERBOTTOM, top=8, cellSpacing=(self.grid_cell_padding, 0))
     35         self.bg_cont = Transform(parent=self, align=Align.TOALL, scalingCenter=(0.5, 0.5))
     36         self.title_grid.Hide()
     37         self.bg_sprite = Sprite(parent=self.bg_cont, texturePath=self._zoom_container_info.content_texturePath, pos=(0,
     38          0,
     39          self.width,
     40          self.height), align=Align.CENTER, state=uiconst.UI_DISABLED)
     41         self.load_container(self._zoom_container_info)
     42 
     43     def load_container(self, container_info):
     44         self._zoom_container_info = container_info
     45         self.title_grid.Flush()
     46         sprite = Sprite(parent=self.title_grid, texturePath=self._zoom_container_info.content_texturePath, pos=(0,
     47          0,
     48          self.icon_size,
     49          self.icon_size))
     50         line = Line(parent=self.title_grid, align=Align.TOLEFT, width=3, opacity=TextColor.NORMAL[3])
     51         text_max_width = self.width - sprite.width - 2 * self.grid_cell_padding - line.width - 16
     52         label = TextBody(parent=self.title_grid, text=self._zoom_container_info.content_name, align=Align.CENTERLEFT)
     53         if label.width > text_max_width:
     54             label.width = text_max_width
     55         self.bg_sprite.texturePath = self._zoom_container_info.content_background_path
     56 
     57     def OnMouseEnter(self, *args):
     58         animations.MorphVector2(self.bg_cont, 'scale', self.bg_cont.scale, (1.1, 1.1), duration=0.25)
     59         self.title_grid.Show()
     60 
     61     def OnMouseExit(self, *args):
     62         animations.MorphVector2(self.bg_cont, 'scale', self.bg_cont.scale, (1.0, 1.0), duration=0.25)
     63         self.title_grid.Hide()
     64 
     65     def OnClick(self, *args):
     66         self.callback(self._zoom_container_info.content_id)
     67 
     68     def GetHint(self):
     69         return self._zoom_container_info.hint
     70 
     71     def GetMenu(self, *args):
     72         return get_qa_menu_for_campaign_zoom_container(self._zoom_container_info)