landingPagePanel.py (7728B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\theatersOfWar\landingPage\landingPagePanel.py 2 import eve.common.lib.appConst as appConst 3 import eveicon 4 import uthread2 5 from campaigns.client.feature_flags import campaigns_enabled 6 from carbonui import Align, uiconst, PickState 7 from carbonui.primitives.container import Container 8 from carbonui.primitives.gridcontainer import GridContainer 9 from eve.client.script.ui import eveColor 10 from eve.client.script.ui.shared.theatersOfWar.dashboard.dashboardConst import ID_INSURGENCY, ID_CAMPAIGNS 11 from eve.client.script.ui.shared.theatersOfWar.dashboard.signals import on_landing_page_widget_clicked 12 from eve.client.script.ui.shared.theatersOfWar.landingPage.achievements import AchievementsCont 13 from eve.client.script.ui.shared.theatersOfWar.landingPage.campaign_cont import LandingPageCampaignCont 14 from eve.client.script.ui.shared.theatersOfWar.landingPage.insurgency import InsurgencyCont 15 from eve.client.script.ui.shared.theatersOfWar.landingPage.personal import PersonalCont 16 from eve.client.script.ui.shared.theatersOfWar.landingPage.warZoneMap import WarzoneMapCont 17 from eve.client.script.ui.shared.theatersOfWar.util import open_fw_window 18 from fwwarzone.client.dashboard.mapData import WarzoneMapData 19 from localization import GetByLabel 20 TOTAL_UNITS = 12.0 21 BIG_SECTION_UNITS = 5 22 MEDIUM_SECTION_UNITS = 4 23 SMALL_SECTION_UNITS = 3 24 WIDTH_PER_UNIT = 1 / TOTAL_UNITS 25 SPACING = 10 26 27 class LandingPagePanel(Container): 28 default_name = 'landingPagePanel' 29 30 def ApplyAttributes(self, attributes): 31 super(LandingPagePanel, self).ApplyAttributes(attributes) 32 self.window_controller = attributes.window_controller 33 self.insurgencyCampaignSvc = sm.GetService('insurgencyCampaignSvc') 34 self.fwWarzoneSvc = sm.GetService('fwWarzoneSvc') 35 self.main_panel_cont = Container(name='main_panel_cont', parent=self, padding=(0, 0, 16, 16)) 36 self._construct_ui() 37 uthread2.StartTasklet(self.load_ui) 38 39 def _Reload(self): 40 self._construct_ui() 41 uthread2.StartTasklet(self.load_ui) 42 43 def _construct_ui(self): 44 self.main_panel_cont.Flush() 45 left_panel = Container(name='left_panel', parent=self.main_panel_cont, align=Align.TOLEFT_PROP, width=BIG_SECTION_UNITS * WIDTH_PER_UNIT, padRight=SPACING / 2, bgColor=eveColor.COAL_BLACK, clipChildren=True) 46 if not campaigns_enabled(): 47 left_panel.Hide() 48 right_panel = Container(name='right_panel', parent=self.main_panel_cont, align=Align.TOALL, padLeft=SPACING / 2) 49 row_grid = GridContainer(name='row_grid', parent=right_panel, align=Align.TOALL, contentSpacing=(SPACING, SPACING), columns=1) 50 available_units = TOTAL_UNITS - BIG_SECTION_UNITS 51 self._construct_maps(row_grid, available_units) 52 self._construct_insurgency(row_grid, available_units) 53 self._construct_bottom_row(row_grid, available_units) 54 self._construct_left_panel(left_panel) 55 56 def _construct_left_panel(self, left_panel): 57 campaign_panel_controller = self.window_controller.campaign_panel_controller 58 self.campaign_cont = LandingPageCampaignCont(parent=left_panel, campaign_panel_controller=campaign_panel_controller, window_controller=self.window_controller, pickState=PickState.ON) 59 self.campaign_cont.OnClick = lambda *args: on_landing_page_widget_clicked(ID_CAMPAIGNS) 60 61 def _construct_maps(self, row_grid, left_side_units): 62 cg_fw_cont, am_fw_cont = self._construct_rows(row_grid, SMALL_SECTION_UNITS, left_side_units) 63 cg_fw_cont.OnClick = lambda *args: self._open_fw_on_faction(appConst.factionCaldariState) 64 am_fw_cont.OnClick = lambda *args: self._open_fw_on_faction(appConst.factionAmarrEmpire) 65 self.caldari_gallente_fw_cont = WarzoneMapCont(parent=cg_fw_cont, pickState=PickState.OFF) 66 self.amarr_minmatar_fw_cont = WarzoneMapCont(parent=am_fw_cont, pickState=PickState.OFF) 67 68 def _construct_insurgency(self, row_grid, left_side_units): 69 guristas_cont, angel_cont = self._construct_rows(row_grid, MEDIUM_SECTION_UNITS, left_side_units) 70 self.guristas_insurgency_cont = InsurgencyCont(parent=guristas_cont, insurgency_name=GetByLabel('UI/TheatersOfWar/InsurgencyGuristas'), texturePath=eveicon.guristas_logo, widget_texture_path=eveicon.pirate_insurgencies, pickState=PickState.ON, pirate_faction_id=appConst.factionGuristasPirates) 71 self.guristas_insurgency_cont.OnClick = lambda *args: self._open_insurgency_on_faction(appConst.factionGuristasPirates) 72 self.angels_insurgency_cont = InsurgencyCont(parent=angel_cont, insurgency_name=GetByLabel('UI/TheatersOfWar/InsurgencyAngelCartel'), texturePath=eveicon.angel_cartel_logo, widget_texture_path=eveicon.pirate_insurgencies, pickState=PickState.ON, pirate_faction_id=appConst.factionAngelCartel) 73 self.angels_insurgency_cont.OnClick = lambda *args: self._open_insurgency_on_faction(appConst.factionAngelCartel) 74 75 def _open_insurgency_on_faction(self, factionID): 76 on_landing_page_widget_clicked(ID_INSURGENCY) 77 78 def _construct_bottom_row(self, row_grid, left_side_units): 79 num_left_units = SMALL_SECTION_UNITS 80 p_cont, a_cont = self._construct_rows(row_grid, num_left_units, left_side_units) 81 self.achievement_cont = AchievementsCont(parent=a_cont, window_controller=self.window_controller) 82 self.personal_cont = PersonalCont(parent=p_cont) 83 84 def _construct_rows(self, grid, num_first_column_units, num_units_available): 85 row = Container(parent=grid, state=uiconst.UI_NORMAL) 86 width = float(num_first_column_units) / num_units_available 87 left_cont = Container(parent=row, state=uiconst.UI_NORMAL, align=Align.TOLEFT_PROP, width=width, padRight=SPACING / 2, bgColor=eveColor.COAL_BLACK) 88 right_cont = Container(parent=row, state=uiconst.UI_NORMAL, align=Align.TOALL, padLeft=SPACING / 2, bgColor=eveColor.COAL_BLACK) 89 return (left_cont, right_cont) 90 91 def load_ui(self): 92 self._load_insurgency_sections() 93 self._load_fw_maps() 94 self._load_achievement_cont() 95 self._load_personal() 96 self._load_campaign_cont() 97 98 def _load_insurgency_sections(self): 99 campaigns_by_faction_id = {x.pirateFactionID:x for x in self.insurgencyCampaignSvc.GetCurrentCampaignSnapshots_Memoized()} 100 for faction_id, insurgency_cont in ((appConst.factionGuristasPirates, self.guristas_insurgency_cont), (appConst.factionAngelCartel, self.angels_insurgency_cont)): 101 campaign = campaigns_by_faction_id.get(faction_id, None) 102 if campaign is None: 103 insurgency_cont.Hide() 104 else: 105 insurgency_cont.load_campaign(campaign) 106 107 def _load_fw_maps(self): 108 fwWarzoneSvc = sm.GetService('fwWarzoneSvc') 109 war_zone_map_data = WarzoneMapData(fwWarzoneSvc) 110 cg_map = self.caldari_gallente_fw_cont.load_fw_maps(warzone_id=self.fwWarzoneSvc.GetWarzoneIdForFaction(appConst.factionCaldariState), sub_header_text=GetByLabel('UI/TheatersOfWar/FwCaldariGallenteWarzone'), war_zone_map_data=war_zone_map_data) 111 am_map = self.amarr_minmatar_fw_cont.load_fw_maps(warzone_id=self.fwWarzoneSvc.GetWarzoneIdForFaction(appConst.factionAmarrEmpire), sub_header_text=GetByLabel('UI/TheatersOfWar/FwAmarrMinmatarWarzone'), war_zone_map_data=war_zone_map_data) 112 113 def _open_fw_on_faction(self, factionID): 114 open_fw_window(factionID) 115 116 def _load_achievement_cont(self): 117 self.achievement_cont.load_ui() 118 119 def _load_personal(self): 120 self.personal_cont.load() 121 122 def _load_campaign_cont(self): 123 self.campaign_cont.load_ui()