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

targetingPanel.py (6341B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\fittingScreen\fittingPanels\targetingPanel.py
      2 import math
      3 import dogma.data as dogma_data
      4 from dogma import const as dogmaConst
      5 from eve.client.script.ui.shared.fittingScreen.fittingPanels.attributePanel import AttributePanel
      6 from eve.client.script.ui.shared.fittingScreen.fittingUtil import GetColoredText
      7 from localization import GetByLabel, GetByMessageID
      8 textureByAttributeID = {dogmaConst.attributeScanResolution: 'res:/UI/Texture/classes/Fitting/StatsIcons/scanResolution.png',
      9  dogmaConst.attributeSignatureRadius: 'res:/UI/Texture/classes/Fitting/StatsIcons/signatureRadius.png',
     10  dogmaConst.attributeMaxLockedTargets: 'res:/UI/Texture/classes/Fitting/StatsIcons/maximumLockedTargets.png',
     11  dogmaConst.attributeScanGravimetricStrength: 'res:/UI/Texture/classes/Fitting/StatsIcons/sensorStrengthCaldari.png',
     12  dogmaConst.attributeScanRadarStrength: 'res:/UI/Texture/classes/Fitting/StatsIcons/sensorStrengthAmarr.png',
     13  dogmaConst.attributeScanMagnetometricStrength: 'res:/UI/Texture/classes/Fitting/StatsIcons/sensorStrengthGallente.png',
     14  dogmaConst.attributeScanLadarStrength: 'res:/UI/Texture/classes/Fitting/StatsIcons/sensorStrengthMinmatar.png'}
     15 
     16 class TargetingPanel(AttributePanel):
     17     default_iconSize = 20
     18     attributesToShow = [('sensorStrength', dogmaConst.attributeScanResolution), (dogmaConst.attributeSignatureRadius, dogmaConst.attributeMaxLockedTargets)]
     19 
     20     def LoadPanel(self, initialLoad = False):
     21         AttributePanel.LoadPanel(self, initialLoad)
     22         shipItem = self.dogmaLocation.GetShipItem()
     23         if not shipItem:
     24             return
     25         activeShip = self.dogmaLocation.GetCurrentShipID()
     26         sensorStrengthAttributeID, val = self.GetSensorStrengthAttribute(activeShip)
     27         parentGrid = self.GetValueParentGrid()
     28         for eachLine in self.attributesToShow:
     29             for eachAttributeID in eachLine:
     30                 if eachAttributeID == 'sensorStrength':
     31                     each = sensorStrengthAttributeID
     32                 else:
     33                     each = eachAttributeID
     34                 attribute = dogma_data.get_attribute(each)
     35                 texturePath = textureByAttributeID.get(each)
     36                 self.AddAttributeCont(attribute, parentGrid, eachAttributeID, texturePath=texturePath)
     37 
     38         AttributePanel.FinalizePanelLoading(self, initialLoad)
     39 
     40     def GetSensorStrengthAttribute(self, shipID):
     41         if session.shipid == shipID:
     42             return sm.GetService('godma').GetStateManager().GetSensorStrengthAttribute(shipID)
     43         else:
     44             dogmaLocation = sm.GetService('fittingSvc').GetCurrentDogmaLocation()
     45             return dogmaLocation.GetSensorStrengthAttribute(shipID)
     46 
     47     def UpdateTargetingPanel(self):
     48         self.LoadPanelIfNeeded()
     49         self.SetTargetingHeader()
     50         self.SetScanResolutionText()
     51         self.SetMaxTargetsText()
     52         self.SetSignatureText()
     53         self.SetSensorStrengthElements()
     54 
     55     def SetTargetingHeader(self):
     56         maxTargetRangeInfo = self.controller.GetMaxTargetRange()
     57         maxRange = maxTargetRangeInfo.value / 1000.0
     58         text = GetByLabel('UI/Fitting/FittingWindow/TargetingHeader', maxRange=maxRange)
     59         coloredText = GetColoredText(isBetter=maxTargetRangeInfo.isBetterThanBefore, text=text)
     60         headerHint = GetByLabel('UI/Fitting/FittingWindow/TargetingHeaderHint')
     61         self.SetStatusText(coloredText, headerHint)
     62 
     63     def SetScanResolutionText(self):
     64         scanResolutionInfo = self.controller.GetScanResolution()
     65         text = GetByLabel('UI/Fitting/FittingWindow/ScanResolution', resolution=int(scanResolutionInfo.value))
     66         coloredText = GetColoredText(isBetter=scanResolutionInfo.isBetterThanBefore, text=text)
     67         self.SetLabel(scanResolutionInfo.attributeID, coloredText)
     68 
     69     def SetMaxTargetsText(self):
     70         maxTargetingInfo = self.controller.GetMaxTargets()
     71         maxTargets = math.ceil(maxTargetingInfo.value)
     72         text = GetByLabel('UI/Fitting/FittingWindow/MaxLockedTargets', maxTargets=int(maxTargets))
     73         coloredText = GetColoredText(isBetter=maxTargetingInfo.isBetterThanBefore, text=text)
     74         self.SetLabel(maxTargetingInfo.attributeID, coloredText)
     75 
     76     def SetSignatureText(self):
     77         signatureRadiusInfo = self.controller.GetSignatureRadius()
     78         text = GetByLabel('UI/Fitting/FittingWindow/TargetingRange', range=signatureRadiusInfo.value)
     79         coloredText = GetColoredText(isBetter=signatureRadiusInfo.isBetterThanBefore, text=text)
     80         self.SetLabel(signatureRadiusInfo.attributeID, coloredText)
     81 
     82     def SetSensorStrengthElements(self):
     83         sensorStrenghtInfos = {dogmaConst.attributeScanRadarStrength: self.controller.GetScanRadarStrength(),
     84          dogmaConst.attributeScanMagnetometricStrength: self.controller.GetScanMagnetometricStrength(),
     85          dogmaConst.attributeScanGravimetricStrength: self.controller.GetScanGravimetricStrength(),
     86          dogmaConst.attributeScanLadarStrength: self.controller.GetScanLadarStrength()}
     87         maxSensorStrenghtAttributeID, maxSensorStrengthInfo = (None, None)
     88         for attributeID, strengthInfo in sensorStrenghtInfos.iteritems():
     89             if maxSensorStrengthInfo is None or strengthInfo.value > maxSensorStrengthInfo.value:
     90                 maxSensorStrengthInfo = strengthInfo
     91                 maxSensorStrenghtAttributeID = attributeID
     92 
     93         text = GetByLabel('UI/Fitting/FittingWindow/SensorStrength', points=maxSensorStrengthInfo.value)
     94         coloredText = GetColoredText(isBetter=maxSensorStrengthInfo.isBetterThanBefore, text=text)
     95         self.SetLabel('sensorStrength', coloredText)
     96         maxSensor = dogma_data.get_attribute(maxSensorStrenghtAttributeID)
     97         iconNum = textureByAttributeID.get(maxSensorStrenghtAttributeID)
     98         self.LoadIcon('sensorStrength', iconNum)
     99         self.SetSensorTooltip(maxSensor)
    100 
    101     def SetSensorTooltip(self, maxSensor):
    102         cont = self.statsContsByIdentifier.get('sensorStrength', None)
    103         if cont is not None and cont.tooltipPanelClassInfo is not None:
    104             tooltipTitleID = maxSensor.tooltipTitleID
    105             if tooltipTitleID:
    106                 tooltipTitle = GetByMessageID(tooltipTitleID)
    107                 cont.tooltipPanelClassInfo.headerText = tooltipTitle