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