skill.py (5692B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\control\entries\skill.py 2 import evetypes 3 import localization 4 from carbonui import uiconst 5 from carbonui.primitives.container import Container 6 from carbonui.primitives.containerAutoSize import ContainerAutoSize 7 from carbonui.primitives.fill import Fill 8 from carbonui.primitives.sprite import Sprite 9 from carbonui.uicore import uicore 10 from eve.client.script.ui.control.entries.generic import Generic 11 from eve.client.script.ui.control.eveLabel import Label 12 from eve.client.script.ui.control.skillBar.skillBar import SkillBar 13 from eve.client.script.ui.shared.neocom.skillConst import COLOR_SKILL_1 14 from eve.common.lib import appConst as const 15 from skills.client.skillController import SkillController 16 17 class SkillTreeEntry(Generic): 18 __guid__ = 'listentry.SkillTreeEntry' 19 isDragObject = True 20 default_showHilite = True 21 22 def ApplyAttributes(self, attributes): 23 super(SkillTreeEntry, self).ApplyAttributes(attributes) 24 self.initialized = False 25 26 def Startup(self, *args): 27 super(SkillTreeEntry, self).Startup(*args) 28 self.skillService = sm.GetService('skills') 29 self.infoService = sm.GetService('info') 30 31 def Load(self, data): 32 super(SkillTreeEntry, self).Load(data) 33 self.indent = 15 * data.indent - 11 34 self.skillID = data.typeID 35 self.skillController = SkillController(self.skillID) 36 data.text = evetypes.GetName(self.skillID) 37 if not self.initialized: 38 self.Layout() 39 self.initialized = True 40 self.Refresh(data) 41 42 def Refresh(self, data): 43 requiredLevel = data.lvl 44 self.node = data 45 text = self.skillController.GetTimeToTrainToLevelText(requiredLevel) 46 self.timeToTrainLabel.SetText(text) 47 text = self.skillController.GetRequiredSkillNameAndLevelComparedToTrainedLevel(data.lvl) 48 self.skillAndLevelLabel.SetText(text) 49 self.skillBar.SetRequiredLevel(requiredLevel) 50 if not self.skillController.IsInjected(): 51 if self.skillController.IsSkillAvailableForPurchase(): 52 self.SetIcon(texturePath='res:/ui/Texture/classes/Skills/SkillBookNotInjected.png', color=COLOR_SKILL_1, hint=localization.GetByLabel('UI/SkillQueue/SkillBookMissing')) 53 else: 54 self.SetIcon(texturePath='res:/ui/Texture/classes/Skills/RareSkillBookNotInjected.png', color=COLOR_SKILL_1, hint=localization.GetByLabel('UI/SkillQueue/RareSkillBookMissing')) 55 self.ShowBackground() 56 elif self.skillController.GetMyLevel() >= requiredLevel: 57 self.SetIcon(texturePath='res:/ui/Texture/classes/Skills/SkillRequirementMet.png', color=(1.0, 1.0, 1.0, 0.5), hint=localization.GetByLabel('UI/InfoWindow/SkillTrainedToRequiredLevel')) 58 self.skillAndLevelLabel.SetRGBA(1.0, 1.0, 1.0, 0.5) 59 self.HideBackground() 60 else: 61 self.SetIcon(texturePath='res:/ui/Texture/classes/Skills/SkillRequirementNotMet.png', color=COLOR_SKILL_1, hint=localization.GetByLabel('UI/InfoWindow/SkillNotTrainedToRequiredLevel')) 62 self.ShowBackground() 63 64 def SetIcon(self, texturePath, color, hint): 65 if self.icon is None: 66 self.icon = Sprite(parent=self.iconCont, align=uiconst.CENTER, texturePath=texturePath, width=16, height=16, color=color, hint=hint) 67 else: 68 self.icon.SetTexturePath(texturePath) 69 self.icon.SetRGBA(*color) 70 self.icon.hint = hint 71 72 def ShowBackground(self): 73 if self.backgroundFill is None: 74 self.backgroundFill = Fill(bgParent=self, color=COLOR_SKILL_1, opacity=0.05, padding=(0, 1, 0, 1)) 75 76 def HideBackground(self): 77 if self.backgroundFill is not None: 78 self.backgroundFill.Close() 79 self.backgroundFill = None 80 81 def Layout(self): 82 self.iconCont = Container(parent=self, align=uiconst.TOLEFT, width=16, left=self.indent) 83 self.icon = None 84 self.skillBar = SkillBar(name='Skill Bar', parent=Container(name='Skill Bar Container', parent=self, align=uiconst.TORIGHT, width=70), align=uiconst.CENTERLEFT, state=uiconst.UI_DISABLED, skillID=self.skillID) 85 self.timeToTrainLabel = Label(name='Time to train label', parent=ContainerAutoSize(parent=self, align=uiconst.TORIGHT, left=8), align=uiconst.CENTERRIGHT, opacity=0.5) 86 self.skillAndLevelLabelParent = Container(name='label container', parent=self, align=uiconst.TOALL, left=5) 87 self.skillAndLevelLabel = Label(name='Skill Name And Level Label', parent=self.skillAndLevelLabelParent, align=uiconst.CENTERLEFT) 88 self.backgroundFill = None 89 90 def UpdateAlignment(self, *args, **kwargs): 91 alignment = super(SkillTreeEntry, self).UpdateAlignment(*args, **kwargs) 92 if self.initialized: 93 self.UpdateLabelFade() 94 return alignment 95 96 def UpdateLabelFade(self): 97 availableWidth = self.skillAndLevelLabelParent.displayWidth - const.defaultPadding 98 self.skillAndLevelLabel.SetRightAlphaFade(fadeEnd=availableWidth, maxFadeWidth=20) 99 100 def GetHeight(self, *args): 101 return 28 102 103 def OnDblClick(self, *args): 104 self.infoService.ShowInfo(self.skillID) 105 106 def GetMenu(self): 107 return self.skillController.GetMenu() 108 109 def GetDragData(self, *args): 110 return [self.node] 111 112 def LoadTooltipPanel(self, tooltipPanel, *args): 113 if uicore.uilib.tooltipHandler.IsUnderTooltip(self): 114 return 115 from eve.client.script.ui.shared.tooltip.skill import LoadSkillEntryTooltip 116 LoadSkillEntryTooltip(tooltipPanel, self.skillID)