fuelConts.py (7205B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\sov\sovHub\fuelConts.py 2 import math 3 import appConst 4 import carbonui 5 import carbonui.text.styles 6 import eveicon 7 import evetypes 8 from carbonui.primitives.container import Container 9 from carbonui.primitives.containerAutoSize import ContainerAutoSize 10 from carbonui.primitives.sprite import Sprite 11 from eve.client.script.ui import eveColor 12 from eve.client.script.ui.control.gaugeCircular import GaugeCircular 13 from eveexceptions import ExceptionEater 14 from eveservices.menu import GetMenuService 15 from localization import GetByLabel 16 from sovereignty.client.quasarCallWrapper import DATA_NOT_AVAILABLE 17 from sovereignty.client.sovHub.hubUtil import GetIconTexturePathForReagent 18 19 class BaseFuelCont(Container): 20 default_height = 120 21 default_width = 120 22 default_align = carbonui.Align.TOPLEFT 23 tooltipLabelPath = '' 24 texturePath = '' 25 reagentTypeID = None 26 27 def ApplyAttributes(self, attributes): 28 self.hubController = attributes.hubController 29 super(BaseFuelCont, self).ApplyAttributes(attributes) 30 self.ConstructUI() 31 if hasattr(self.hubController, 'on_online_state_changed'): 32 self.hubController.on_online_state_changed.connect(self.OnOnlineStateChanged) 33 if hasattr(self.hubController, 'on_upgrades_changed'): 34 self.hubController.on_upgrades_changed.connect(self.OnUpgradesChanged) 35 36 def ConstructUI(self): 37 self.timeLabel = carbonui.text.styles.TextHeadline(parent=self, text='', align=carbonui.Align.CENTER, pickState=carbonui.PickState.ON) 38 self.timeLabel.hint = GetByLabel(self.tooltipLabelPath) 39 self.amountLabel = carbonui.text.styles.TextBody(parent=self, text='', align=carbonui.Align.CENTER, top=20, color=carbonui.TextColor.SECONDARY) 40 self.perHourLabel = carbonui.text.styles.TextBody(parent=self, text='', align=carbonui.Align.CENTER, top=35, color=carbonui.TextColor.SECONDARY) 41 icon = Sprite(parent=self, align=carbonui.Align.CENTER, pos=(0, -24, 16, 16), texturePath=self.texturePath) 42 icon.GetMenu = lambda *args: GetMenuService().GetMenuFromItemIDTypeID(None, self.reagentTypeID) 43 self.gaugeCircular = GaugeCircular(parent=self, showMarker=False, radius=55, lineWidth=3.0, startAngle=math.pi / 2, align=carbonui.Align.CENTER, colorStart=eveColor.CRYO_BLUE, colorEnd=eveColor.CRYO_BLUE, glow=True, glowBrightness=0.3) 44 45 def OnOnlineStateChanged(self, typeID): 46 self.LoadUI() 47 48 def OnUpgradesChanged(self): 49 self.LoadUI() 50 51 def LoadUI(self): 52 numHoursLeftProgress = self.hubController.GetTimeLeftProgressForTypeID(self.reagentTypeID) 53 numHoursLeftText = self.hubController.GetTimeLeftTextForTypeID(self.reagentTypeID) 54 if numHoursLeftProgress is None: 55 self.timeLabel.text = numHoursLeftText 56 self.gaugeCircular.SetValue(0) 57 else: 58 self.timeLabel.text = numHoursLeftText 59 self.gaugeCircular.SetValue(min(1.0, numHoursLeftProgress)) 60 fuelInfo = self.hubController.GetReagentForTypeID(self.reagentTypeID) 61 if fuelInfo == DATA_NOT_AVAILABLE: 62 self.amountLabel.text = GetByLabel('UI/Sovereignty/HubPage/NotAvailable', color=eveColor.GUNMETAL_HEX) 63 elif fuelInfo: 64 self.amountLabel.text = fuelInfo.amount_now 65 else: 66 self.amountLabel.text = 0 67 perHour = self.hubController.GetReagentConsumptionForTypeID(self.reagentTypeID) 68 if perHour == DATA_NOT_AVAILABLE: 69 self.perHourLabel.text = GetByLabel('UI/Sovereignty/HubPage/NotAvailable', color=eveColor.GUNMETAL_HEX) 70 else: 71 self.perHourLabel.text = GetByLabel('UI/Sovereignty/AmountPerHour', value=perHour) 72 73 def Close(self): 74 with ExceptionEater('Closing BaseFuelCont'): 75 if hasattr(self.hubController, 'on_online_state_changed'): 76 self.hubController.on_online_state_changed.disconnect(self.OnOnlineStateChanged) 77 if hasattr(self.hubController, 'on_upgrades_changed'): 78 self.hubController.on_upgrades_changed.disconnect(self.OnUpgradesChanged) 79 self.hubController = None 80 super(BaseFuelCont, self).Close() 81 82 83 class FuelMagmaCont(BaseFuelCont): 84 tooltipLabelPath = 'UI/Sovereignty/SovHub/HubWnd/TimeUntilMagmaRunsOut' 85 texturePath = eveicon.magmatic_gas 86 reagentTypeID = appConst.typeColonyReagentLava 87 88 89 class FuelIceCont(BaseFuelCont): 90 tooltipLabelPath = 'UI/Sovereignty/SovHub/HubWnd/TimeUntilIceRunsOut' 91 texturePath = eveicon.superionic_ice 92 reagentTypeID = appConst.typeColonyReagentIce 93 94 95 class StartupCostCont(ContainerAutoSize): 96 default_align = carbonui.Align.TOTOP 97 98 def ApplyAttributes(self, attributes): 99 self.hubController = attributes.hubController 100 super(StartupCostCont, self).ApplyAttributes(attributes) 101 self.ConstructUI() 102 self.hubController.on_online_state_changed.connect(self.OnOnlineStateChanged) 103 self.hubController.on_upgrades_changed.connect(self.OnUpgradesChanged) 104 105 def ConstructUI(self): 106 header = carbonui.text.styles.TextDetail(parent=self, text=GetByLabel('UI/Sovereignty/SovHub/HubWnd/StartupCostHeader'), color=carbonui.TextColor.SECONDARY, align=carbonui.Align.TOTOP, pickState=carbonui.PickState.ON) 107 innerCont = ContainerAutoSize(parent=self, align=carbonui.Align.TOTOP) 108 cont = ContainerAutoSize(name='lavaCont', parent=innerCont) 109 self.lavaIcon = Sprite(name='lavaIcon', parent=cont, align=carbonui.Align.CENTERLEFT, pos=(0, 0, 16, 16), texturePath=GetIconTexturePathForReagent(appConst.typeColonyReagentLava), color=eveColor.TUNGSTEN_GREY) 110 self.lavaIcon.hint = evetypes.GetName(appConst.typeColonyReagentLava) 111 self.lavaLabel = carbonui.text.styles.TextHeader(parent=cont, text='000', align=carbonui.Align.CENTERLEFT, left=20) 112 cont = ContainerAutoSize(name='iceCont', parent=innerCont, left=100) 113 self.iceIcon = Sprite(name='iceIcon', parent=cont, align=carbonui.Align.CENTERLEFT, pos=(0, 0, 16, 16), texturePath=GetIconTexturePathForReagent(appConst.typeColonyReagentIce), color=eveColor.TUNGSTEN_GREY) 114 self.iceIcon.hint = evetypes.GetName(appConst.typeColonyReagentIce) 115 self.iceLabel = carbonui.text.styles.TextHeader(parent=cont, text='000', align=carbonui.Align.CENTERLEFT, left=20) 116 117 def OnOnlineStateChanged(self, typeID): 118 self.LoadUI() 119 120 def OnUpgradesChanged(self): 121 self.LoadUI() 122 123 def LoadUI(self): 124 startupLava = self.hubController.GetStartupCostForTypeID(appConst.typeColonyReagentLava) 125 self.lavaLabel.text = startupLava or '000' 126 startupIce = self.hubController.GetStartupCostForTypeID(appConst.typeColonyReagentIce) 127 self.iceLabel.text = startupIce or '000' 128 129 def Close(self): 130 with ExceptionEater('Closing StartupCostCont'): 131 self.hubController.on_online_state_changed.disconnect(self.OnOnlineStateChanged) 132 self.hubController.on_upgrades_changed.disconnect(self.OnUpgradesChanged) 133 self.hubController = None 134 super(StartupCostCont, self).Close()