selectedItemTimers.py (4102B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\inflight\selectedItemTimers.py 2 import gametime 3 import structures 4 from carbon.common.script.util.format import FmtDate 5 from eve.client.script.ui.inflight.bracketsAndTargets.bracketVarious import entityStateStrings 6 from eve.common.script.mgt import entityConst 7 import orbitalSkyhook.const as skyhookConst 8 import eve.common.lib.appConst as appConst 9 import eve.common.script.mgt.posConst as pos 10 import blue 11 from eve.common.script.sys.idCheckers import IsSkyhook, IsMercenaryDen 12 from localization import GetByLabel 13 from orbitalSkyhook import const 14 15 def GetTimerText(slimItem): 16 text = '' 17 if HasStructureTimer(slimItem): 18 structureTimerText = _GetStructureTimerText(slimItem) 19 text += '<br>' + structureTimerText 20 if HasSkyhookTimer(slimItem): 21 skyhookTimerText = _GetSkyhookTimerText(slimItem) 22 text += '<br>' + skyhookTimerText 23 mercDenTimer = GetMercDenTimer(slimItem) 24 if mercDenTimer: 25 text += '<br>' + mercDenTimer 26 if slimItem.typeID == appConst.typePlanetaryCustomsOffice or slimItem.groupID == appConst.groupOrbitalConstructionPlatforms: 27 pocoTimerText = _GetPocoTimerText(slimItem) 28 if pocoTimerText: 29 text += '<br>' + pocoTimerText 30 elif slimItem.groupID == appConst.groupControlTower: 31 posTimerText = _GetPosTimerText(slimItem) 32 if posTimerText: 33 text += '<br>' + posTimerText 34 return text 35 36 37 def HasStructureTimer(slimItem): 38 if slimItem.categoryID != appConst.categoryStructure: 39 return False 40 return _HasReinforceTimer(slimItem.timer, slimItem.state, structures.STATE_VULNERABILITY) 41 42 43 def HasSkyhookTimer(slimItem): 44 if not IsSkyhook(slimItem.typeID): 45 return False 46 return _HasReinforceTimer(slimItem.skyhook_timer, slimItem.skyhook_state, skyhookConst.STATE_VULNERABILITY) 47 48 49 def _HasReinforceTimer(timer, structureState, vulnerableStates): 50 isVulnerable = vulnerableStates.get(structureState, None) 51 if isVulnerable is not False: 52 return False 53 if not timer: 54 return False 55 return True 56 57 58 def _GetReinforceStructureTimerText(timer, structureState, labelDict): 59 start, end, paused = timer 60 if paused: 61 end = end + blue.os.GetWallclockTime() - paused 62 stateText = GetByLabel(labelDict[structureState]) 63 return GetByLabel('UI/Inflight/ActiveItem/InStateUntil', structureState=stateText, timestamp=FmtDate(end)) 64 65 66 def _GetStructureTimerText(slimItem): 67 return _GetReinforceStructureTimerText(slimItem.timer, slimItem.state, structures.STATE_LABELS) 68 69 70 def _GetSkyhookTimerText(slimItem): 71 return _GetReinforceStructureTimerText(slimItem.skyhook_timer, slimItem.skyhook_state, skyhookConst.STATE_LABELS) 72 73 74 def _GetPocoTimerText(slimItem): 75 if slimItem.orbitalState in (entityConst.STATE_ANCHORING, entityConst.STATE_ONLINING, entityConst.STATE_SHIELD_REINFORCE): 76 timer = (None, slimItem.orbitalTimestamp, None) 77 entityStateStringsCopy = entityStateStrings.copy() 78 entityStateStringsCopy[entityConst.STATE_ONLINING] = GetByLabel('UI/Entities/States/Upgrading') 79 return _GetReinforceStructureTimerText(timer, slimItem.orbitalState, entityStateStrings) 80 81 82 def _GetPosTimerText(slimItem): 83 if slimItem.posState == pos.STRUCTURE_REINFORCED: 84 timer = (None, slimItem.posTimestamp, None) 85 return _GetReinforceStructureTimerText(timer, slimItem.posState, pos.DisplayNames) 86 87 88 def GetMercDenTimer(slimItem): 89 if not IsMercenaryDen(slimItem.groupID): 90 return None 91 return _GetSpaceComponentReinforceTimer(slimItem) 92 93 94 def _GetSpaceComponentReinforceTimer(slimItem): 95 if slimItem.component_reinforce is None: 96 return 97 isReinforced, reinforceTimestamp = slimItem.component_reinforce 98 if not isReinforced: 99 return 100 if reinforceTimestamp < gametime.GetWallclockTime(): 101 return 102 return GetByLabel('UI/Inflight/ActiveItem/InStateUntil', structureState=GetByLabel('UI/Entities/States/Reinforced'), timestamp=FmtDate(reinforceTimestamp))