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

timedBracket.py (2207B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\inflight\bracketsAndTargets\timedBracket.py
      2 from carbonui.primitives.container import Container
      3 from carbonui.primitives.fill import Fill
      4 from carbonui.primitives.frame import Frame
      5 from eve.client.script.ui.inflight.bracketsAndTargets.inSpaceBracket import InSpaceBracket
      6 import blue
      7 import carbonui.const as uiconst
      8 from carbonui.uicore import uicore
      9 
     10 class TimedBracket(InSpaceBracket):
     11 
     12     def __init__(self, **kwargs):
     13         super(TimedBracket, self).__init__(**kwargs)
     14         self.width = self.height = 32
     15         container = Container(parent=self, align=uiconst.CENTER, top=12, height=30, width=64)
     16         self.timer = Timer(parent=container, align=uiconst.TOTOP, height=12, state=uiconst.UI_HIDDEN)
     17         self.SetUnlocking(self.slimItem)
     18 
     19     def Animate(self, startProportion, duration):
     20         self.timer.state = uiconst.UI_NORMAL
     21         self.timer.Animate(startProportion, float(duration))
     22 
     23     def OnSlimItemChange(self, oldSlim, newSlim):
     24         self.SetUnlocking(newSlim)
     25 
     26     def SetUnlocking(self, slimItem):
     27         if slimItem.timerInfo is not None:
     28             startProportion, duration = self.GetAnimationInfo(*slimItem.timerInfo)
     29             self.Animate(startProportion, duration)
     30 
     31     def GetAnimationInfo(self, startTime, duration):
     32         durationInBlueTime = duration * const.SEC
     33         endTime = startTime + durationInBlueTime
     34         currentTime = blue.os.GetSimTime()
     35         if endTime < currentTime:
     36             return (1.0, duration)
     37         startProportion = (currentTime - startTime) / durationInBlueTime
     38         return (startProportion, duration)
     39 
     40 
     41 class Timer(Container):
     42 
     43     def ApplyAttributes(self, attributes):
     44         super(Timer, self).ApplyAttributes(attributes)
     45         self.frame = Frame(parent=self)
     46         self.fill = Fill(parent=self, align=uiconst.TOLEFT_PROP, width=0, padding=(2, 2, 2, 2))
     47 
     48     def Animate(self, startProportion, duration):
     49         self.fill.width = startProportion
     50         uicore.animations.MorphScalar(self.fill, 'width', startVal=float(startProportion), endVal=1.0, duration=duration, loops=1, curveType=uiconst.ANIM_LINEAR)