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

shipcasterUtil.py (3322B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\shipcaster\client\shipcasterUtil.py
      2 import eve.common.lib.appConst as appConst
      3 import eveformat.client
      4 import gametime
      5 from carbonui.control.contextMenu.menuEntryData import MenuEntryData
      6 from localization import GetByLabel
      7 from menu import MenuLabel
      8 from spacecomponents.common.componentConst import SHIPCASTER_LAUNCHER, STARTER_SHIPCASTER
      9 from spacecomponents.common.helper import HasShipcasterComponent
     10 from carbon.common.script.util.format import FmtDate
     11 from eve.client.script.ui.eveColor import LED_GREY
     12 
     13 def GetShipcasterText(slimItem):
     14     if not HasShipcasterComponent(slimItem.typeID):
     15         return ''
     16     linkedTargets = slimItem.component_shipcaster_linked_targets or []
     17     if not len(linkedTargets):
     18         return eveformat.tags.color('UI/Inflight/ShipcasterNotLinkedToTarget', LED_GREY)
     19     target0Info = linkedTargets[0]
     20     if target0Info[0] is None:
     21         return eveformat.tags.color(GetByLabel('UI/Inflight/ShipcasterNotLinkedToTarget'), LED_GREY)
     22     targetSystem, targetID, targetFactionID = target0Info[0]
     23     startTime = target0Info[1]
     24     endTime = target0Info[2]
     25     textList = [GetByLabel('UI/Inflight/ShipcasterLinkedToTargetSystem', solarsystem=targetSystem, securityStatus=eveformat.solar_system_security_status(targetSystem))]
     26     now = gametime.GetWallclockTime()
     27     if startTime > now:
     28         textList.append(GetByLabel('UI/Inflight/ShipcasterCharging', timeLeft=FmtDate(startTime - gametime.GetWallclockTime(), 'ns')))
     29     elif endTime > now:
     30         textList.append(GetByLabel('UI/Inflight/ShipcasterActive', timeLeft=FmtDate(endTime - gametime.GetWallclockTime(), 'ns')))
     31     return '<br>'.join(textList)
     32 
     33 
     34 def GetTargetForShipcaster(itemID):
     35     bp = sm.GetService('michelle').GetBallpark()
     36     shipcasterLauncherComponent = bp.componentRegistry.GetComponentForItem(itemID, SHIPCASTER_LAUNCHER)
     37     if shipcasterLauncherComponent:
     38         return (shipcasterLauncherComponent.targetSolarsystemID, shipcasterLauncherComponent.targetLandingPadID)
     39     return (None, None)
     40 
     41 
     42 def GetTargetForStarterShipcaster(itemID):
     43     bp = sm.GetService('michelle').GetBallpark()
     44     shipcasterLauncherComponent = bp.componentRegistry.GetComponentForItem(itemID, STARTER_SHIPCASTER)
     45     if shipcasterLauncherComponent:
     46         return (shipcasterLauncherComponent.targetSolarsystemID, None)
     47     return (None, None)
     48 
     49 
     50 def GetNextTargetForShipcaster(itemID):
     51     bp = sm.StartService('michelle').GetBallpark()
     52     shipcasterLauncherComponent = bp.componentRegistry.GetComponentForItem(itemID, SHIPCASTER_LAUNCHER)
     53     if shipcasterLauncherComponent:
     54         return shipcasterLauncherComponent.nextTargetSolarsystemID
     55 
     56 
     57 def GetFailureTextAndDisabledOption(itemID, celestial):
     58     if celestial.failure_label == 'UI/Menusvc/MenuHints/ShipcasterIsCharging':
     59         nextTargetID = GetNextTargetForShipcaster(itemID)
     60         if nextTargetID:
     61             failureText = GetByLabel('UI/Inflight/ShipcasterChargingLink', solarsystem=nextTargetID)
     62             med = MenuEntryData(MenuLabel('UI/Inflight/JumpByShipcasterToSystem', kw={'solarsystem': nextTargetID}), isEnabled=False, hint=failureText)
     63             return (failureText, med)
     64     text = sm.GetService('menu').GetUnavailableText(celestial)
     65     return (text, None)