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

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)