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)