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

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))