dronePanel.py (4606B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\fittingScreen\fittingPanels\dronePanel.py 2 from carbon.common.script.util.format import FmtAmt 3 from carbonui import ButtonVariant, const as uiconst, Density 4 from carbonui.primitives.sprite import Sprite 5 from dogma.attributes.format import GetFormattedAttributeAndValueAllowZero 6 from carbonui.control.button import Button 7 from eve.client.script.ui.control.eveLabel import EveLabelMedium 8 from eve.client.script.ui.shared.fittingScreen.fittingPanels.basePanel import BaseMenuPanel 9 from eve.client.script.ui.shared.fittingScreen.fittingUtil import GetColoredText 10 from eve.client.script.ui.station.fitting.fittingTooltipUtils import SetFittingTooltipInfo 11 from localization import GetByLabel 12 from carbonui.uicore import uicore 13 14 class DronePanel(BaseMenuPanel): 15 default_iconSize = 20 16 droneStats = (('bandwidth', 'res:/UI/Texture/classes/Fitting/StatsIcons/bandwidth.png', 'DroneBandwidth'), ('controlRange', 'res:/UI/Texture/classes/Fitting/StatsIcons/controlRange.png', 'DroneControlRange')) 17 18 def ApplyAttributes(self, attributes): 19 BaseMenuPanel.ApplyAttributes(self, attributes) 20 21 def LoadPanel(self, initialLoad = False): 22 self.Flush() 23 self.ResetStatsDicts() 24 self.display = True 25 parentGrid = self.GetValueParentGrid() 26 for configName, texturePath, tooltipName in self.droneStats: 27 valueCont = self.GetValueCont(self.iconSize) 28 parentGrid.AddCell(cellObject=valueCont) 29 icon = Sprite(texturePath=texturePath, parent=valueCont, align=uiconst.CENTERLEFT, pos=(3, 30 0, 31 self.iconSize, 32 self.iconSize), state=uiconst.UI_DISABLED) 33 label = EveLabelMedium(text='', parent=valueCont, left=0, state=uiconst.UI_DISABLED, align=uiconst.CENTERLEFT) 34 SetFittingTooltipInfo(targetObject=valueCont, tooltipName=tooltipName) 35 self.statsLabelsByIdentifier[configName] = label 36 self.statsIconsByIdentifier[configName] = icon 37 self.statsContsByIdentifier[configName] = valueCont 38 39 self.selectedDrones = EveLabelMedium(text='', parent=parentGrid, left=self.iconSize + 7, state=uiconst.UI_DISABLED, align=uiconst.CENTERLEFT) 40 parentGrid.AddCell(cellObject=Button(label=GetByLabel('UI/Fitting/FittingWindow/ManageDrones'), func=self.ManageDrones, align=uiconst.TOPLEFT, variant=ButtonVariant.GHOST, density=Density.COMPACT), cellPadding=4) 41 BaseMenuPanel.FinalizePanelLoading(self, initialLoad) 42 43 def ManageDrones(self, *args): 44 if self.controller.IsSimulated(): 45 self.controller.OpenFakeDroneBay() 46 else: 47 uicore.cmd.GetCommandAndExecute('OpenDroneBayOfActiveShip') 48 49 def UpdateDroneStats(self): 50 activeDroneNumInfo, droneBandwidthUsageInfo, droneDpsInfo = self.controller.GetDroneInfo() 51 self.SetDroneDpsText(droneDpsInfo) 52 if not self.panelLoaded or self.destroyed: 53 return 54 shipBandwidthInfo = self.controller.GetDroneBandwidth() 55 text = GetByLabel('UI/Fitting/FittingWindow/NumDronesActive', numDrones=activeDroneNumInfo.value) 56 coloredText = GetColoredText(isBetter=activeDroneNumInfo.isBetterThanBefore, text=text) 57 self.selectedDrones.text = coloredText 58 bandwithUsedText = FmtAmt(droneBandwidthUsageInfo.value) 59 bandwithUsedTextColoredText = GetColoredText(isBetter=droneBandwidthUsageInfo.isBetterThanBefore, text=bandwithUsedText) 60 shipBandwidthText = GetFormattedAttributeAndValueAllowZero(const.attributeDroneBandwidth, shipBandwidthInfo.value).value 61 shipBandwidthColoredText = GetColoredText(isBetter=shipBandwidthInfo.isBetterThanBefore, text=shipBandwidthText) 62 bandwidthText = '%s/%s' % (bandwithUsedTextColoredText, shipBandwidthColoredText) 63 self.SetLabel('bandwidth', bandwidthText) 64 droneControlRange = self.controller.GetDroneControlRange() 65 controlRangeText = GetFormattedAttributeAndValueAllowZero(const.attributeDroneControlDistance, droneControlRange.value).value 66 droneControlRangeColoredText = GetColoredText(isBetter=droneControlRange.isBetterThanBefore, text=controlRangeText) 67 self.SetLabel('controlRange', droneControlRangeColoredText) 68 69 def SetDroneDpsText(self, droneDpsInfo): 70 droneText = GetByLabel('UI/Fitting/FittingWindow/DpsLabel', dps=droneDpsInfo.value) 71 droneColoredText = GetColoredText(isBetter=droneDpsInfo.isBetterThanBefore, text=droneText) 72 self.SetStatusText(droneColoredText)