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

careerDetailsPanel.py (5553B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\careerPortal\panels\careerDetailsPanel.py
      2 from carbonui import Align, ButtonVariant, Density, TextAlign, uiconst
      3 from carbonui.control.button import Button
      4 from carbonui.primitives.containerAutoSize import ContainerAutoSize
      5 from carbonui.primitives.line import Line
      6 from careergoals.client.career_goal_svc import get_career_goals_svc
      7 from careergoals.client.const import RewardLabel
      8 from characterdata.careerpath import get_career_path
      9 from eve.client.script.ui.control.eveLabel import EveCaptionLarge, EveLabelMedium, EveCaptionMedium
     10 from eve.client.script.ui.shared.careerPortal import careerConst
     11 from eve.client.script.ui.shared.careerPortal.careerControllerUI import get_career_portal_controller_svc
     12 from eve.client.script.ui.shared.careerPortal.panels.basePanel import BasePanel
     13 from eve.client.script.ui.shared.careerPortal.panels.detailsEntry import OmegaRewardDetailsEntry, AlphaRewardDetailsEntry
     14 from eve.client.script.ui.shared.careerPortal.util import get_text_for_reward
     15 from eveui import Sprite, Container
     16 from localization import GetByLabel, GetByMessageID
     17 ICON_SIZE = 16
     18 CRATE_SIZE = 64
     19 
     20 class CareerDetailsPanel(BasePanel):
     21     default_name = 'CareerDetailsPanel'
     22 
     23     def __init__(self, *args, **kwargs):
     24         super(CareerDetailsPanel, self).__init__(*args, **kwargs)
     25         self.ConstructLayout()
     26         careerConst.SELECTED_CAREER_PATH_SETTING.on_change.connect(self.LoadCareer)
     27         self.LoadCareer(careerConst.SELECTED_CAREER_PATH_SETTING.get())
     28 
     29     def Close(self):
     30         careerConst.SELECTED_CAREER_PATH_SETTING.on_change.disconnect(self.LoadCareer)
     31         super(CareerDetailsPanel, self).Close()
     32 
     33     def ConstructLayout(self):
     34         self._ConstructTitle()
     35         self._ConstructDescription()
     36         self._ConstructPlayButton()
     37         Line(parent=self, align=uiconst.TOTOP, top=ICON_SIZE)
     38         self._ConstructRewardContainer()
     39 
     40     def _ConstructRewardContainer(self):
     41         rewardContainer = Container(name='rewardContainer', parent=self, align=uiconst.TOTOP, top=ICON_SIZE, height=CRATE_SIZE)
     42         self.crateSprite = Sprite(name='crateSprite', parent=Container(parent=rewardContainer, align=uiconst.TOLEFT, width=CRATE_SIZE), align=uiconst.TOLEFT, pos=(0,
     43          0,
     44          CRATE_SIZE,
     45          CRATE_SIZE), state=uiconst.UI_NORMAL)
     46         rewardLabelContainer = Container(name='rewardLabelContainer', parent=rewardContainer, align=uiconst.TOALL, left=8)
     47         rewardText = GetByLabel('UI/CareerPortal/GraduationReward')
     48         EveCaptionMedium(name='rewardCrateLabel', parent=rewardLabelContainer, align=uiconst.CENTERLEFT, text=rewardText)
     49         self.reward_list_container = ContainerAutoSize(name='reward_list_container', parent=self, align=Align.TOTOP)
     50 
     51     def construct_reward_list(self):
     52         self.reward_list_container.Flush()
     53         career_goal = self.career_goal
     54         if not career_goal:
     55             return
     56         for reward in career_goal.definition.omega_rewards:
     57             self.create_reward_entry(reward)
     58 
     59         for reward in career_goal.definition.alpha_rewards:
     60             self.create_reward_entry(reward)
     61 
     62     def create_reward_entry(self, reward):
     63         entry = self.get_reward_entry_class(reward)(parent=self.reward_list_container, align=Align.TOTOP, text=get_text_for_reward(reward), reward=reward, top=-1)
     64 
     65     def get_reward_entry_class(self, reward):
     66         if reward.reward_label == RewardLabel.OMEGA:
     67             return OmegaRewardDetailsEntry
     68         return AlphaRewardDetailsEntry
     69 
     70     def _ConstructPlayButton(self):
     71         self.playVideoButton = Button(parent=Container(name='playVideoButtonContainer', parent=self, align=uiconst.TOTOP, height=20, top=ICON_SIZE), name='playVideoButton', align=uiconst.CENTERLEFT, label=GetByLabel('UI/CareerPortal/PlayVideo'), texturePath='res:/UI/Texture/classes/careerPortal/playVideo.png', iconSize=ICON_SIZE, density=Density.COMPACT, variant=ButtonVariant.GHOST)
     72 
     73     def _ConstructDescription(self):
     74         self.descriptionLabel = EveLabelMedium(parent=self, align=uiconst.TOTOP, textAlign=TextAlign.LEFT, top=10)
     75 
     76     def _ConstructTitle(self):
     77         titleCont = Container(name='titleCont', parent=self, align=uiconst.TOTOP, height=30)
     78         self.careerIcon = Sprite(name='careerIcon', parent=Container(parent=titleCont, align=uiconst.TOLEFT, width=32), align=uiconst.CENTER, pos=(0, 0, 32, 32))
     79         self.careerNameLabel = EveCaptionLarge(name='careerNameLabel', parent=Container(parent=titleCont, align=uiconst.TOALL, left=8), align=uiconst.CENTERLEFT)
     80 
     81     def LoadCareer(self, careerID):
     82         if not careerID:
     83             return
     84         self.careerIcon.texturePath = careerConst.CAREERS_32_SIZES.get(careerID, '')
     85         career = get_career_path(careerID)
     86         if not career:
     87             return
     88         self.careerNameLabel.text = GetByMessageID(career.nameID)
     89         self.descriptionLabel.text = GetByMessageID(career.descriptionID)
     90         self.crateSprite.texturePath = careerConst.CRATE_64_SIZES.get(careerID, '')
     91         self.construct_reward_list()
     92         career_goal = self.career_goal
     93         if not career_goal:
     94             return
     95         self.playVideoButton.func = lambda x: get_career_portal_controller_svc().play_video(video_path=careerConst.CAREER_VIDEOS.get(careerID, ''))
     96 
     97     @property
     98     def career_goal(self):
     99         return get_career_goals_svc().get_goal_data_controller().get_career_path_goal(career_path_id=careerConst.SELECTED_CAREER_PATH_SETTING.get())