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()