From 0a23c3cabb39bc011881b946739dca81ff563ebf Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Wed, 12 Dec 2018 00:32:50 +0300 Subject: [PATCH] Add spoolup support to misc column tooltips --- eos/saveddata/drone.py | 7 +- eos/saveddata/module.py | 4 +- gui/builtinStatsViews/firepowerViewFull.py | 2 +- gui/builtinStatsViews/outgoingViewFull.py | 2 +- gui/builtinStatsViews/outgoingViewMinimal.py | 2 +- gui/builtinViewColumns/misc.py | 76 +++++++++----------- 6 files changed, 41 insertions(+), 52 deletions(-) diff --git a/eos/saveddata/drone.py b/eos/saveddata/drone.py index 0002797f1..cea63b4cb 100644 --- a/eos/saveddata/drone.py +++ b/eos/saveddata/drone.py @@ -153,8 +153,8 @@ class Drone(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): explosive=volley.explosive * dpsFactor) return dps - def getRemoteReps(self): - if self.amountActive <= 0: + def getRemoteReps(self, stateOverride=False): + if self.amountActive <= 0 and not stateOverride: return (None, 0) if self.__baseRemoteReps is None: droneShield = self.getModifiedItemAttr("shieldBonus", 0) @@ -173,7 +173,8 @@ class Drone(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): rrType = None rrAmount = 0 if rrAmount: - rrAmount *= self.amountActive / (self.cycleTime / 1000) + droneAmount = self.amount if stateOverride else self.amountActive + rrAmount *= droneAmount / (self.cycleTime / 1000) self.__baseRemoteReps = (rrType, rrAmount) return self.__baseRemoteReps diff --git a/eos/saveddata/module.py b/eos/saveddata/module.py index a3f4d81a0..93c797c4d 100644 --- a/eos/saveddata/module.py +++ b/eos/saveddata/module.py @@ -473,8 +473,8 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): explosive=volley.explosive * dpsFactor) return dps - def getRemoteReps(self, spoolType=None, spoolAmount=None): - if self.isEmpty or self.state < State.ACTIVE: + def getRemoteReps(self, spoolType=None, spoolAmount=None, stateOverride=False): + if self.isEmpty or (self.state < State.ACTIVE and not stateOverride): return (None, 0) def getBaseRemoteReps(module): diff --git a/gui/builtinStatsViews/firepowerViewFull.py b/gui/builtinStatsViews/firepowerViewFull.py index 93de4dd4a..86caa6a9e 100644 --- a/gui/builtinStatsViews/firepowerViewFull.py +++ b/gui/builtinStatsViews/firepowerViewFull.py @@ -190,7 +190,7 @@ class FirepowerViewFull(StatsView): val = val() if fit is not None else 0 preSpoolVal = preSpoolVal() if fit is not None else 0 fullSpoolVal = fullSpoolVal() if fit is not None else 0 - # TODO: temporary override, should be removed when spoolup settings are implemented + # TODO: use spoolup options to fetch main value val = fullSpoolVal if self._cachedValues[counter] != val: valueStr = formatAmount(val, prec, lowest, highest) diff --git a/gui/builtinStatsViews/outgoingViewFull.py b/gui/builtinStatsViews/outgoingViewFull.py index 8ec6425b5..ab38f0a63 100644 --- a/gui/builtinStatsViews/outgoingViewFull.py +++ b/gui/builtinStatsViews/outgoingViewFull.py @@ -113,7 +113,7 @@ class OutgoingViewFull(StatsView): val = val() if fit is not None else 0 preSpoolVal = preSpoolVal() if fit is not None else 0 fullSpoolVal = fullSpoolVal() if fit is not None else 0 - # TODO: temporary override, should be removed when spoolup settings are implemented + # TODO: use spoolup options to fetch main value val = fullSpoolVal if self._cachedValues[counter] != val: valueStr = formatAmount(val, prec, lowest, highest) diff --git a/gui/builtinStatsViews/outgoingViewMinimal.py b/gui/builtinStatsViews/outgoingViewMinimal.py index be27afc8c..d612de83e 100644 --- a/gui/builtinStatsViews/outgoingViewMinimal.py +++ b/gui/builtinStatsViews/outgoingViewMinimal.py @@ -112,7 +112,7 @@ class OutgoingViewMinimal(StatsView): val = val() if fit is not None else 0 preSpoolVal = preSpoolVal() if fit is not None else 0 fullSpoolVal = fullSpoolVal() if fit is not None else 0 - # TODO: temporary override, should be removed when spoolup settings are implemented + # TODO: use spoolup options to fetch main value val = fullSpoolVal if self._cachedValues[counter] != val: valueStr = formatAmount(val, prec, lowest, highest) diff --git a/gui/builtinViewColumns/misc.py b/gui/builtinViewColumns/misc.py index 227b69bfa..324f63e18 100644 --- a/gui/builtinViewColumns/misc.py +++ b/gui/builtinViewColumns/misc.py @@ -27,7 +27,7 @@ from gui.viewColumn import ViewColumn from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount from gui.utils.listFormatter import formatList -from eos.saveddata.drone import Drone +from eos.utils.spoolSupport import SpoolType class Miscellanea(ViewColumn): @@ -332,40 +332,45 @@ class Miscellanea(ViewColumn): text = "{0}s".format(formatAmount(float(recalibration) / 1000, 3, 0, 3)) tooltip = "Sensor recalibration time" return text, tooltip - elif itemGroup in ("Remote Armor Repairer", "Mutadaptive Remote Armor Repairer"): - repAmount = stuff.getModifiedItemAttr("armorDamageAmount") - cycleTime = stuff.getModifiedItemAttr("duration") - if not repAmount or not cycleTime: + elif itemGroup == "Remote Armor Repairer": + rps = stuff.getRemoteReps(stateOverride=True)[1] + if not rps: return "", None - repPerSec = float(repAmount) * 1000 / cycleTime - text = "{0}/s".format(formatAmount(repPerSec, 3, 0, 3, forceSign=True)) + text = "{0}/s".format(formatAmount(rps, 3, 0, 3, forceSign=True)) tooltip = "Armor repaired per second" return text, tooltip - elif itemGroup == "Remote Shield Booster": - repAmount = stuff.getModifiedItemAttr("shieldBonus") - cycleTime = stuff.cycleTime - if not repAmount or not cycleTime: + elif itemGroup == "Mutadaptive Remote Armor Repairer": + rps = stuff.getRemoteReps(stateOverride=True)[1] + rpsPreSpool = stuff.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=0, stateOverride=True)[1] + rpsFullSpool = stuff.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=1, stateOverride=True)[1] + # TODO: use spoolup options to fetch main value + rps = rpsFullSpool + if not rps: return "", None - repPerSec = float(repAmount) * 1000 / cycleTime - text = "{0}/s".format(formatAmount(repPerSec, 3, 0, 3, forceSign=True)) + text = "{0}/s".format(formatAmount(rps, 3, 0, 3, forceSign=True)) + tooltip = "Armor repaired per second, spoolup {}-{}".format( + formatAmount(rpsPreSpool, 3, 0, 3), + formatAmount(rpsFullSpool, 3, 0, 3)) + return text, tooltip + elif itemGroup == "Remote Shield Booster": + rps = stuff.getRemoteReps(stateOverride=True)[1] + if not rps: + return "", None + text = "{0}/s".format(formatAmount(rps, 3, 0, 3, forceSign=True)) tooltip = "Shield transferred per second" return text, tooltip elif itemGroup == "Remote Capacitor Transmitter": - repAmount = stuff.getModifiedItemAttr("powerTransferAmount") - cycleTime = stuff.cycleTime - if not repAmount or not cycleTime: + rps = stuff.getRemoteReps(stateOverride=True)[1] + if not rps: return "", None - repPerSec = float(repAmount) * 1000 / cycleTime - text = "{0}/s".format(formatAmount(repPerSec, 3, 0, 3, forceSign=True)) + text = "{0}/s".format(formatAmount(rps, 3, 0, 3, forceSign=True)) tooltip = "Energy transferred per second" return text, tooltip elif itemGroup == "Remote Hull Repairer": - repAmount = stuff.getModifiedItemAttr("structureDamageAmount") - cycleTime = stuff.cycleTime - if not repAmount or not cycleTime: + rps = stuff.getRemoteReps(stateOverride=True)[1] + if not rps: return "", None - repPerSec = float(repAmount) * 1000 / cycleTime - text = "{0}/s".format(formatAmount(repPerSec, 3, 0, 3, forceSign=True)) + text = "{0}/s".format(formatAmount(rps, 3, 0, 3, forceSign=True)) tooltip = "Structure repaired per second" return text, tooltip elif itemGroup == "Gang Coordinator": @@ -463,28 +468,11 @@ class Miscellanea(ViewColumn): tooltip = "Mining Yield per second ({0} per hour)".format(formatAmount(minePerSec * 3600, 3, 0, 3)) return text, tooltip elif itemGroup == "Logistic Drone": - armorAmount = stuff.getModifiedItemAttr("armorDamageAmount") - shieldAmount = stuff.getModifiedItemAttr("shieldBonus") - hullAmount = stuff.getModifiedItemAttr("structureDamageAmount") - repAmount = armorAmount or shieldAmount or hullAmount - cycleTime = stuff.getModifiedItemAttr("duration") - if not repAmount or not cycleTime: + repType, rps = stuff.getRemoteReps(stateOverride=True) + if not repType: return "", None - repPerSecPerDrone = repPerSec = float(repAmount) * 1000 / cycleTime - - if isinstance(stuff, Drone): - repPerSec *= stuff.amount - - text = "{0}/s".format(formatAmount(repPerSec, 3, 0, 3)) - ttEntries = [] - if hullAmount is not None and repAmount == hullAmount: - ttEntries.append("structure") - if armorAmount is not None and repAmount == armorAmount: - ttEntries.append("armor") - if shieldAmount is not None and repAmount == shieldAmount: - ttEntries.append("shield") - - tooltip = "{0} HP repaired per second\n{1} HP/s per drone".format(formatList(ttEntries).capitalize(), repPerSecPerDrone) + text = "{}/s".format(formatAmount(rps, 3, 0, 3)) + tooltip = "{} HP repaired per second\n{} HP/s per drone".format(repType, formatAmount(rps / stuff.amount, 3, 0, 3)) return text, tooltip elif itemGroup == "Energy Neutralizer Drone": neutAmount = stuff.getModifiedItemAttr("energyNeutralizerAmount")