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

skyhookBracket.py (4518B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\inflight\bracketsAndTargets\skyhookBracket.py
      2 import blue
      3 import localization
      4 from eve.client.script.spacecomponents.activatecontroller import ActivateCounterController
      5 from eve.client.script.ui.inflight.bracketsAndTargets.inSpaceBracket import InSpaceBracket
      6 from eve.client.script.ui.control.countdownTimer import CountdownTimer, TIMER_RUNNING_OUT_NO_ANIMATION
      7 from eve.client.script.ui.control.damageRing import DamageRing
      8 import orbitalSkyhook.const as reinforceConst
      9 
     10 class SkyhookBracket(InSpaceBracket):
     11 
     12     def __init__(self, **kwargs):
     13         super(SkyhookBracket, self).__init__(**kwargs)
     14         self.damage = DamageRing(name='DamageRing', parent=self)
     15         self.skyhookTimer = CountdownTimer(name='StructureCounter', parent=self, countsDown=True, timerFunc=blue.os.GetWallclockTime, timerRunningOutAnimation=TIMER_RUNNING_OUT_NO_ANIMATION)
     16         self.skyhookTimer.Hide()
     17         self.Update()
     18 
     19     def Showing(self):
     20         return self.selection_sprite is not None and self.selection_sprite.display
     21 
     22     def Select(self, status):
     23         if bool(status) != self.Showing():
     24             InSpaceBracket.Select(self, status)
     25             self.Update()
     26 
     27     def OnSlimItemChange(self, oldSlim, newSlim):
     28         self.slimItem = newSlim
     29         self.Update()
     30 
     31     def Update(self):
     32         self.SetSubLabelCallback(self.UpdateLabel)
     33         self.UpdateTimer()
     34 
     35     def UpdateLabel(self):
     36         if not self.slimItem.skyhook_state or not self.IsVisible():
     37             return
     38         labelList = []
     39         if self.slimItem.component_activate:
     40             isActive, activeTimestamp = self.slimItem.component_activate
     41             if not isActive:
     42                 if activeTimestamp:
     43                     remaining = max(activeTimestamp - blue.os.GetWallclockTime(), 0)
     44                 else:
     45                     remaining = 0
     46                 text = '%s: %s' % (localization.GetByLabel('UI/Structures/States/Onlining'), localization.formatters.FormatTimeIntervalShortWritten(remaining, showFrom='day', showTo='second'))
     47                 labelList.append(text)
     48         if self.slimItem.skyhook_timer:
     49             start, end, paused = self.slimItem.skyhook_timer
     50             remaining = max(end - (paused or blue.os.GetWallclockTime()), 0)
     51             stateLabel = u'{state}: {time} {paused}'.format(state=self.GetStateLabel(), time=localization.formatters.FormatTimeIntervalShortWritten(remaining, showFrom='day', showTo='second'), paused=localization.GetByLabel('UI/Structures/States/Paused') if paused else '')
     52         else:
     53             stateLabel = self.GetStateLabel()
     54         labelList.append(stateLabel)
     55         label = '<br>'.join(labelList)
     56         return label
     57 
     58     def GetStateLabel(self):
     59         label = ''
     60         if self.slimItem.skyhook_repairing is not None:
     61             label = localization.GetByLabel('UI/Structures/States/Repairing')
     62         elif self.slimItem.skyhook_state:
     63             label = localization.GetByLabel(reinforceConst.STATE_LABELS[self.slimItem.skyhook_state])
     64         return label
     65 
     66     def UpdateTimer(self):
     67         if self.destroyed:
     68             return None
     69         visible = self.IsVisible()
     70         start, end, paused = self.slimItem.skyhook_timer or (0, 0, None)
     71         validTime = start and end and bool(int(end - start))
     72         if validTime:
     73             self.skyhookTimer.SetExpiryTime(end, end - start, paused)
     74         if self.slimItem.skyhook_state:
     75             self.skyhookTimer.SetTimerColor(reinforceConst.STATE_COLOR.get(self.slimItem.skyhook_state, (1, 1, 1, 1)))
     76         if validTime and (self.IsSelectedOrHilted() or self.slimItem.skyhook_damage) and visible:
     77             self.skyhookTimer.Show()
     78         else:
     79             self.skyhookTimer.Hide()
     80         if self.slimItem.skyhook_damage and visible:
     81             self.damage.Show()
     82             self.damage.SetDamage(self.slimItem.skyhook_damage)
     83         else:
     84             self.damage.Hide()
     85         self.ResizeActivationTimer()
     86 
     87     def ResizeActivationTimer(self):
     88         activationController = self.GetCounterControllerForClass(ActivateCounterController)
     89         if not activationController or not activationController.timer:
     90             return
     91         if self.skyhookTimer.display:
     92             activationController.timer.scale = (1.4, 1.4)
     93         else:
     94             activationController.timer.scale = (1.0, 1.0)
     95 
     96     def IsVisible(self):
     97         return sm.GetService('michelle').IsBallVisible(self.itemID)