droneTooltip.py (5114B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\fittingScreen\droneTooltip.py 2 import dogma.attributes.format as attributeFormat 3 import eveformat 4 import evetypes 5 import log 6 from carbon.common.script.util.timerstuff import AutoTimer 7 from dogma.data import get_attribute_display_name, get_attribute 8 from eve.client.script.ui import eveColor 9 from eve.client.script.ui.inflight.shipModuleButton.moduleButtonTooltip import ModuleButtonTooltip 10 from eve.client.script.ui.tooltips.tooltipsWrappers import TooltipBaseWrapper 11 from eve.common.lib import appConst 12 from fsdBuiltData.common.iconIDs import GetIconFile 13 from localization import GetByLabel 14 from utillib import KeyVal 15 16 class DroneTooltipWrapper(TooltipBaseWrapper): 17 18 def CreateTooltip(self, parent, owner, idx): 19 self.tooltipPanel = DroneTooltip(parent=parent, owner=owner, idx=idx) 20 return self.tooltipPanel 21 22 23 class DroneFittingTooltipWrapper(TooltipBaseWrapper): 24 25 def CreateTooltip(self, parent, owner, idx): 26 self.tooltipPanel = DroneFittingTooltip(parent=parent, owner=owner, idx=idx) 27 return self.tooltipPanel 28 29 30 class DroneTooltip(ModuleButtonTooltip): 31 infoFunctionNames = {appConst.groupMiningDrone: 'AddMiningDroneInfo'} 32 33 def LoadTooltip(self): 34 if not self.owner: 35 return 36 itemIDs = self.owner.sr.node.itemIDs 37 if not itemIDs: 38 return 39 self.moduleItemID = list(itemIDs)[0] 40 self.ownerGuid = 'Drones' 41 if not self.moduleItemID: 42 return 43 self.dogmaLocation = self.GetDogmaLocation() 44 self.moduleInfoItem = self.dogmaLocation.GetDogmaItem(self.moduleItemID) 45 self.moduleGroupID = evetypes.GetGroupID(self.moduleInfoItem.typeID) 46 self.moduleCategoryID = evetypes.GetCategoryID(self.moduleInfoItem.typeID) 47 self.numSlaves = 0 48 if self.stateManager.GetDefaultEffect(self.moduleInfoItem.typeID): 49 self.moduleShortcut = self.GetModuleShortcut(self.moduleInfoItem) 50 else: 51 self.moduleShortcut = None 52 self.typeName = evetypes.GetName(self.moduleInfoItem.typeID) 53 self.onHUDModuleButton = False 54 self.UpdateToolTips() 55 self._toolTooltipUpdateTimer = AutoTimer(1000, self.UpdateToolTips) 56 57 def GetDogmaLocation(self): 58 return sm.GetService('clientDogmaIM').GetDogmaLocation() 59 60 def GetNumberOfSlaves(self, *args): 61 return 1 62 63 def ShouldAddDps(self, *args): 64 return True 65 66 def GetDpsDamageTypeInfo(self, itemID, typeID, groupID, charge, numSlaves): 67 shipID = self.dogmaLocation.GetCurrentShipID() 68 drones = {itemID: 1} 69 damage, _ = self.dogmaLocation.GetOptimalDroneDamage2(shipID, drones) 70 return KeyVal(totalDpsDamage=damage, totalDpsDamageWithReload=damage, texturePath='res:/UI/Texture/Icons/drones.png', iconID=None, damageMultiplier=1, totalMaxDpsDamage=None, totalMaxDpsDamageWithReload=None) 71 72 def AddActivityStatus(self): 73 pass 74 75 def AddCountDownTimes(self, itemID): 76 pass 77 78 def GetModuleDamage(self, ownerGuid, moduleItemID): 79 return KeyVal(moduleDamage=None, repairingModuleDamage=None, repairTimeLeft=None) 80 81 def AddMiningDroneInfo(self, itemID, chargeInfoItem): 82 durationText = self.GetDuration(itemID) 83 amount = self.GetEffectiveAttributeValue(itemID, appConst.attributeMiningAmount) 84 durationInSec = self.GetEffectiveAttributeValue(itemID, appConst.attributeDuration) / 1000.0 85 amountPerSec = amount / durationInSec 86 text = GetByLabel('UI/Inflight/ModuleRacks/Tooltips/MiningAmountPerTime2', duration=durationText, amount=amount, amountPerSec=amountPerSec) 87 self.AddRowWithIconAndText(text=text, texturePath='res:/ui/texture/icons/23_64_5.png') 88 89 def UpdateToolTips(self): 90 try: 91 super(DroneTooltip, self).UpdateToolTips() 92 self.AddDroneBandwidthUsed() 93 except KeyError as e: 94 log.LogWarn('Failed to display drone tooltip, keyError e = ', e) 95 96 def GetTypeText(self): 97 text = super(DroneTooltip, self).GetTypeText() 98 activity = self.owner.GetDroneActivityDescription() 99 if activity: 100 text += u'<br>{}'.format(eveformat.color(activity, eveColor.SUCCESS_GREEN)) 101 state = self.owner.GetDroneStateDescription() 102 if state: 103 text += u'<br>{}'.format(state) 104 return text 105 106 def AddDroneBandwidthUsed(self): 107 value = self.GetEffectiveAttributeValue(self.moduleItemID, appConst.attributeDroneBandwidthUsed) 108 displayName = get_attribute_display_name(appConst.attributeDroneBandwidthUsed) 109 text = '%s %s' % (displayName, attributeFormat.GetFormatAndValue(get_attribute(appConst.attributeDroneBandwidthUsed), value)) 110 texturePath = GetIconFile(attributeFormat.GetIconID(appConst.attributeDroneBandwidthUsed)) 111 self.AddRowWithIconAndText(text, texturePath) 112 113 114 class DroneFittingTooltip(DroneTooltip): 115 116 def GetDogmaLocation(self): 117 return sm.GetService('clientDogmaIM').GetFittingDogmaLocation()