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

baseSkillEntry.py (6696B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\skillPlan\skillQueuePanel\baseSkillEntry.py
      2 import dogma.data as dogma_data
      3 import localization
      4 from carbonui import uiconst
      5 from carbonui.control.scrollentries import SE_BaseClassCore
      6 from carbonui.primitives.container import Container
      7 from carbonui.primitives.containerAutoSize import ContainerAutoSize
      8 from carbonui.primitives.fill import Fill
      9 from eve.client.script.ui.control.eveLabel import EveLabelLarge
     10 from eve.client.script.ui.control.eveWindowUnderlay import ListEntryUnderlay
     11 from eve.client.script.ui.control.skillBar.skillBar import SkillBar
     12 from eve.common.lib import appConst
     13 from localization.formatters.timeIntervalFormatters import FormatTimeIntervalShortWritten
     14 BLUE_COLOR = (0.0, 0.52, 0.67, 1.0)
     15 LIGHTBLUE_COLOR = (0.6, 0.8, 0.87, 1.0)
     16 WHITE_COLOR = (1.0, 1.0, 1.0, 0.5)
     17 
     18 class BaseSkillEntry(SE_BaseClassCore):
     19     __guid__ = 'listentry.BaseSkillEntry'
     20     __nonpersistvars__ = ['selection', 'id']
     21     lasttime = None
     22     lastprogress = None
     23     lastrate = None
     24     timer = None
     25     totalpoints = None
     26     hilitePartiallyTrained = None
     27     blueColor = BLUE_COLOR
     28     lightBlueColor = LIGHTBLUE_COLOR
     29     whiteColor = WHITE_COLOR
     30     skillPointsText = ''
     31     rank = 0.0
     32     default_highlightClass = ListEntryUnderlay
     33 
     34     def _OnClose(self, *args, **kw):
     35         super(BaseSkillEntry, self)._OnClose(*args, **kw)
     36         self.timer = None
     37 
     38     def ApplyAttributes(self, attributes):
     39         super(BaseSkillEntry, self).ApplyAttributes(attributes)
     40         self.inTrainingHilite = None
     41         self.timeLeftContainer = ContainerAutoSize(name='TimeLeftCont', parent=self, align=uiconst.TORIGHT, padding=(4, 0, 20, 0))
     42         self.textCont = Container(name='textCont', parent=self, align=uiconst.TOALL, padLeft=77, clipChildren=1)
     43         self.nameLevelLabel = None
     44         self.CheckConstructNameLevelLabel()
     45         self.timeLeftText = None
     46         self.endOfTraining = None
     47         self.skillBarInitialized = False
     48         self.skill_service = sm.GetService('skills')
     49 
     50     def CheckConstructNameLevelLabel(self):
     51         if not self.nameLevelLabel:
     52             cont = ContainerAutoSize(parent=self.textCont, align=uiconst.TOLEFT)
     53             self.nameLevelLabel = EveLabelLarge(name='nameLevelLabel', text='', parent=cont, state=uiconst.UI_DISABLED, maxLines=1, align=uiconst.CENTERLEFT)
     54 
     55     def CheckConstructInTrainingHiglight(self):
     56         if not self.inTrainingHilite:
     57             self.inTrainingHilite = Fill(parent=self, name='inTrainingHilite', padTop=1, padBottom=1, color=self.blueColor, opacity=0.15, state=uiconst.UI_HIDDEN)
     58 
     59     def Load(self, node):
     60         self.sr.node = node
     61         self.sr.node.meetRequirements = False
     62         self.lasttime = None
     63         self.lastsecs = None
     64         self.lastpoints = None
     65         self.timer = None
     66         self.endOfTraining = None
     67         data = node
     68         self.rec = data.skill
     69         trainedSkillLevel = data.skill.trainedSkillLevel or 0
     70         trainedSkillPoints = data.skill.trainedSkillPoints or 0
     71         if not self.skillBarInitialized:
     72             self.skillBarInitialized = True
     73             SkillBar(parent=self, align=uiconst.CENTERLEFT, left=2, state=uiconst.UI_DISABLED, skillID=self.rec.typeID, overrideLevel=node.trainToLevel, requiredLevel=node.trainToLevel)
     74             if trainedSkillLevel < 5:
     75                 duration = long(self.skill_service.GetRawTrainingTimeForSkillLevel(self.rec.typeID, trainedSkillLevel + 1))
     76                 self.timeLeftText = EveLabelLarge(parent=self.timeLeftContainer, align=uiconst.CENTERRIGHT, text=self._GetTimeLeftText(duration))
     77         self.skillPointsText = ''
     78         self.rank = 0.0
     79         if data.trained:
     80             self.rank = int(data.skill.skillRank + 0.4)
     81             spHi = sm.GetService('skills').SkillpointsNextLevel(data.skill.typeID) or 0.0
     82             if trainedSkillLevel >= 5:
     83                 self.skillPointsText = localization.GetByLabel('UI/SkillQueue/Skills/SkillPointsValue', skillPoints=int(trainedSkillPoints))
     84             else:
     85                 self.skillPointsText = localization.GetByLabel('UI/SkillQueue/Skills/SkillPointsAndNextLevelValues', skillPoints=int(trainedSkillPoints), skillPointsToNextLevel=int(spHi + 0.5))
     86                 self.sr.node.meetRequirements = True
     87             self.hint = None
     88         else:
     89             self.sr.node.meetRequirements = sm.GetService('skills').IsSkillRequirementMet(data.invtype)
     90             if self.sr.node.meetRequirements:
     91                 tappend = localization.GetByLabel('UI/SkillQueue/Skills/SkillRequirementsMet')
     92             else:
     93                 tappend = localization.GetByLabel('UI/SkillQueue/Skills/SkillRequirementsNotMet')
     94             self.skillPointsText = tappend
     95             self.hint = tappend
     96             for each in dogma_data.get_type_attributes(data.invtype):
     97                 if each.attributeID == const.attributeSkillTimeConstant:
     98                     self.rank = int(each.value)
     99 
    100         if data.Get('inTraining', 0):
    101             self.CheckConstructInTrainingHiglight()
    102             self.inTrainingHilite.state = uiconst.UI_DISABLED
    103         elif self.inTrainingHilite:
    104             self.inTrainingHilite.Hide()
    105         if data.Get('selected', 0):
    106             self.Select()
    107         else:
    108             self.Deselect()
    109 
    110     def _GetTimeLeftText(self, duration):
    111         if duration > appConst.DAY:
    112             showTo = 'hour'
    113         elif duration > appConst.HOUR:
    114             showTo = 'minute'
    115         else:
    116             showTo = 'second'
    117         return FormatTimeIntervalShortWritten(duration, showFrom='day', showTo=showTo)
    118 
    119     def OnSkillpointChange(self, skillPoints = None):
    120         if self.destroyed:
    121             return
    122         skill = self.rec
    123         self.CheckConstructNameLevelLabel()
    124         self.nameLevelLabel.text = localization.GetByLabel('UI/SkillQueue/Skills/SkillNameAndRankValue', skill=skill.typeID, rank=int(skill.skillRank + 0.4))
    125 
    126     def OnMouseEnter(self, *args):
    127         if hasattr(self, 'rec') and not sm.GetService('skills').HasSkill(self.rec.typeID):
    128             return
    129         super(BaseSkillEntry, self).OnMouseEnter(*args)
    130 
    131     def ShowInfo(self, *args):
    132         sm.GetService('info').ShowInfo(self.rec.typeID, None)
    133 
    134     def SetTimeLeft(self, timeLeft):
    135         if not self.destroyed and self.timeLeftText:
    136             if timeLeft is None:
    137                 timeLeftText = ''
    138             elif timeLeft <= 0:
    139                 timeLeftText = localization.GetByLabel('UI/SkillQueue/Skills/CompletionImminent')
    140             else:
    141                 timeLeftText = self._GetTimeLeftText(long(timeLeft))
    142             self.timeLeftText.text = timeLeftText