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

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