From 7f86782f547fd1d9ed48b3aa021fe2f705bb3682 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Fri, 15 Nov 2019 13:23:27 +0300 Subject: [PATCH] Change range column tooltip for missiles --- eos/saveddata/module.py | 22 +++++++--------------- gui/builtinViewColumns/maxRange.py | 18 ++++++++++++++++-- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/eos/saveddata/module.py b/eos/saveddata/module.py index 6d9a804de..03f056e21 100644 --- a/eos/saveddata/module.py +++ b/eos/saveddata/module.py @@ -322,20 +322,12 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): maxRange = self.getModifiedItemAttr(attr, None) if maxRange is not None: return maxRange - if self.charge is not None: - try: - chargeName = self.charge.group.name - except AttributeError: - pass - else: - if chargeName in ("Scanner Probe", "Survey Probe"): - return None - missileMaxRangeData = self.missileMaxRangeData - if missileMaxRangeData is None: - return None - lowerRange, higherRange, higherChance = missileMaxRangeData - maxRange = lowerRange * (1 - higherChance) + higherRange * higherChance - return maxRange + missileMaxRangeData = self.missileMaxRangeData + if missileMaxRangeData is None: + return None + lowerRange, higherRange, higherChance = missileMaxRangeData + maxRange = lowerRange * (1 - higherChance) + higherRange * higherChance + return maxRange @property def missileMaxRangeData(self): @@ -362,7 +354,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): maxVelocity = self.getModifiedChargeAttr("maxVelocity") if not maxVelocity: - return 0, 0, 0 + return None shipRadius = self.owner.ship.getModifiedItemAttr("radius") # Flight time has bonus based on ship radius, see https://github.com/pyfa-org/Pyfa/issues/2083 flightTime = floatUnerr(self.getModifiedChargeAttr("explosionDelay") / 1000 + shipRadius / maxVelocity) diff --git a/gui/builtinViewColumns/maxRange.py b/gui/builtinViewColumns/maxRange.py index 24f72b3a1..b91465efc 100644 --- a/gui/builtinViewColumns/maxRange.py +++ b/gui/builtinViewColumns/maxRange.py @@ -24,7 +24,7 @@ from eos.saveddata.mode import Mode from service.attribute import Attribute from gui.viewColumn import ViewColumn from gui.bitmap_loader import BitmapLoader -from gui.utils.numberFormatter import formatAmount +from gui.utils.numberFormatter import formatAmount, roundToPrec class MaxRange(ViewColumn): @@ -77,7 +77,21 @@ class MaxRange(ViewColumn): return ("displayName", bool, False), ("showIcon", bool, True) def getToolTip(self, mod): - return "Optimal + Falloff" + lines = [] + missileRangeData = mod.missileMaxRangeData if hasattr(mod, "missileMaxRangeData") else None + if missileRangeData is not None: + lines.append('Missile flight range') + lowerRange, higherRange, higherChance = missileRangeData + if roundToPrec(higherChance, 3) not in (0, 1): + lines.append('{}% chance to fly {}'.format( + formatAmount((1 - higherChance) * 100, prec=3, lowest=0, highest=0), + formatAmount(lowerRange, prec=3, lowest=0, highest=3, unitName='m'))) + lines.append('{}% chance to fly {}'.format( + formatAmount(higherChance * 100, prec=3, lowest=0, highest=0), + formatAmount(higherRange, prec=3, lowest=0, highest=3, unitName='m'))) + else: + lines.append("Optimal + Falloff") + return '\n'.join(lines) MaxRange.register()