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

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)