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

set_panel.py (4483B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\theatersOfWar\campaigns\panels\set_panel.py
      2 from carbonui import Align, TextColor
      3 from carbonui.primitives.container import Container
      4 from carbonui.primitives.layoutGrid import LayoutGrid
      5 from carbonui.primitives.line import Line
      6 from carbonui.primitives.sprite import Sprite
      7 from carbonui.text.custom import TextCustom
      8 from carbonui.text.styles import TextHeadline
      9 from eve.client.script.ui.shared.theatersOfWar.campaigns.panels.single_campaign_panel import SingleCampaignPanel
     10 from eve.client.script.ui.shared.theatersOfWar.campaigns.zoom_container import ZoomContainerInfo, ZoomContainer
     11 from eveexceptions import ExceptionEater
     12 from localization.formatters.timeIntervalFormatters import GetByLabel
     13 
     14 class CampaignSetPanel(Container):
     15     default_name = 'campaignSetPanel'
     16     default_align = Align.TOALL
     17 
     18     def ApplyAttributes(self, attributes):
     19         super(CampaignSetPanel, self).ApplyAttributes(attributes)
     20         self.campaignPanelController = attributes.campaignPanelController
     21         content_cont = Container(parent=self)
     22         bg_cont = Container(parent=self)
     23         self.bg_sprite = Sprite(parent=bg_cont, pos=(0, 0, 1680, 1050), align=Align.CENTER)
     24         self.bottom_cont = Container(parent=content_cont, align=Align.TOBOTTOM, height=108, top=80)
     25         self.center_cont = Container(name='center_cont', parent=content_cont)
     26         self.connect_signals()
     27         self._load_campaigns()
     28 
     29     def connect_signals(self):
     30         self.campaignPanelController.on_campaign_selected.connect(self.on_campaign_selected)
     31 
     32     def disconnect_signals(self):
     33         self.campaignPanelController.on_campaign_selected.disconnect(self.on_campaign_selected)
     34 
     35     def on_campaign_selected(self, campaign_id):
     36         self.load_center()
     37 
     38     def load_center(self):
     39         self.center_cont.Flush()
     40         self.bottom_cont.Flush()
     41         self._load_campaigns()
     42 
     43     def _load_campaigns(self):
     44         self._load_campaign_set_info()
     45         campaign_controllers = self.campaignPanelController.get_campaigns()
     46         if not campaign_controllers:
     47             return
     48         grid = LayoutGrid(parent=self.bottom_cont, align=Align.CENTERTOP, columns=len(campaign_controllers), cellSpacing=(16, 0))
     49         for campaign_controller in campaign_controllers:
     50             zoom_container_info = ZoomContainerInfo(content_id=campaign_controller.campaign_id, content_name=campaign_controller.title_text, content_texturePath=campaign_controller.textures.icon_path, content_background_path=campaign_controller.textures.overview_button_texture_path, content_definition_name=campaign_controller.definition_name)
     51             c = ZoomContainer(parent=grid, align=Align.TOPLEFT, pos=(0, 0, 192, 108), zoom_container_info=zoom_container_info, callback=self.select_campaign)
     52 
     53     def select_campaign(self, campaign_id):
     54         self.campaignPanelController.selected_campaign_id = campaign_id
     55 
     56     def _load_campaign_set_info(self):
     57         campaign_set_info = self.campaignPanelController.get_campaign_set_info()
     58         if not campaign_set_info:
     59             raise RuntimeError('Implement the campaign set!')
     60         days_left = self.campaignPanelController.get_num_days_left()
     61         text_cont = Container(parent=self.center_cont, align=Align.TOLEFT, pos=(96, 0, 650, 0), padTop=120)
     62         header_text = GetByLabel(campaign_set_info.header_path)
     63         self._header = TextCustom(parent=text_cont, text=header_text.upper(), fontsize=128, align=Align.TOTOP, bold=True, lineSpacing=-0.2)
     64         paths_to_show = [campaign_set_info.subHeader_path1, campaign_set_info.subHeader_path2]
     65         text_to_show = [ GetByLabel(x) for x in paths_to_show if x ]
     66         if days_left:
     67             time_left_text = GetByLabel('UI/Campaigns/DaysLeft', numDays=days_left)
     68             text_to_show.append(time_left_text)
     69         subtitle_grid = LayoutGrid(parent=text_cont, columns=5, align=Align.TOTOP, cellSpacing=(8, 0))
     70         for i, text in enumerate(text_to_show):
     71             TextHeadline(parent=subtitle_grid, text=text)
     72             if i < len(text_to_show) - 1:
     73                 Line(parent=subtitle_grid, align=Align.TOLEFT, width=3, opacity=TextColor.NORMAL[3])
     74 
     75         self.bg_sprite.SetTexturePath(campaign_set_info.background)
     76 
     77     def Close(self):
     78         with ExceptionEater('Closing CampaignSetPanel'):
     79             self.disconnect_signals()
     80         super(CampaignSetPanel, self).Close()