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)