From ae4ec99308c7c75e61b67f90d7dc9fbdb6d92d66 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Thu, 9 Dec 2021 23:20:02 +0300 Subject: [PATCH] Show mining stats in misc column even for inactive mods/drones --- eos/saveddata/drone.py | 14 ++++++++------ eos/saveddata/fit.py | 8 ++++---- eos/saveddata/module.py | 33 +++++++++++++++++---------------- gui/builtinViewColumns/misc.py | 4 ++-- 4 files changed, 31 insertions(+), 28 deletions(-) diff --git a/eos/saveddata/drone.py b/eos/saveddata/drone.py index 9ec1f6485..93c037bbd 100644 --- a/eos/saveddata/drone.py +++ b/eos/saveddata/drone.py @@ -241,27 +241,29 @@ class Drone(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut, Mu return None return CycleInfo(self.cycleTime, 0, math.inf, False) - @property - def miningYPS(self): + def getMiningYPS(self, ignoreState=False): + if not ignoreState and self.amountActive <= 0: + return 0 if self.__miningYield is None: self.__miningYield, self.__miningWaste = self.__calculateMining() return self.__miningYield - @property - def miningWPS(self): + def getMiningWPS(self, ignoreState=False): + if not ignoreState and self.amountActive <= 0: + return 0 if self.__miningWaste is None: self.__miningYield, self.__miningWaste = self.__calculateMining() return self.__miningWaste def __calculateMining(self): - if self.mines is True and self.amountActive > 0: + if self.mines is True: getter = self.getModifiedItemAttr cycleParams = self.getCycleParameters() if cycleParams is None: yps = 0 else: cycleTime = cycleParams.averageTime - yield_ = sum([getter(d) for d in self.MINING_ATTRIBUTES]) * self.amountActive + yield_ = sum([getter(d) for d in self.MINING_ATTRIBUTES]) * self.amount yps = yield_ / (cycleTime / 1000.0) wasteChance = self.getModifiedItemAttr("miningWasteProbability") wasteMult = self.getModifiedItemAttr("miningWastedVolumeMultiplier") diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index 52346c1be..a94fdb4e8 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -1656,11 +1656,11 @@ class Fit: droneWaste = 0 for mod in self.modules: - minerYield += mod.miningYPS - minerWaste += mod.miningWPS + minerYield += mod.getMiningYPS() + minerWaste += mod.getMiningWPS() for drone in self.drones: - droneYield += drone.miningYPS - droneWaste += drone.miningWPS + droneYield += drone.getMiningYPS() + droneWaste += drone.getMiningWPS() self.__minerYield = minerYield self.__minerWaste = minerWaste diff --git a/eos/saveddata/module.py b/eos/saveddata/module.py index 331e1125e..809b172a9 100644 --- a/eos/saveddata/module.py +++ b/eos/saveddata/module.py @@ -410,32 +410,33 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut, M self.__itemModifiedAttributes.clear() - @property - def miningYPS(self): + def getMiningYPS(self, ignoreState=False): + if self.isEmpty: + return 0 + if not ignoreState and self.state < FittingModuleState.ACTIVE: + return 0 if self.__miningYield is None: self.__miningYield, self.__miningWaste = self.__calculateMining() return self.__miningYield - @property - def miningWPS(self): + def getMiningWPS(self, ignoreState=False): + if self.isEmpty: + return 0 + if not ignoreState and self.state < FittingModuleState.ACTIVE: + return 0 if self.__miningWaste is None: self.__miningYield, self.__miningWaste = self.__calculateMining() return self.__miningWaste def __calculateMining(self): - if self.isEmpty: - return 0, 0 - if self.state >= FittingModuleState.ACTIVE: - yield_ = self.getModifiedItemAttr("miningAmount") - if yield_: - cycleParams = self.getCycleParameters() - if cycleParams is None: - yps = 0 - else: - cycleTime = cycleParams.averageTime - yps = yield_ / (cycleTime / 1000.0) - else: + yield_ = self.getModifiedItemAttr("miningAmount") + if yield_: + cycleParams = self.getCycleParameters() + if cycleParams is None: yps = 0 + else: + cycleTime = cycleParams.averageTime + yps = yield_ / (cycleTime / 1000.0) else: yps = 0 wasteChance = self.getModifiedItemAttr("miningWasteProbability") diff --git a/gui/builtinViewColumns/misc.py b/gui/builtinViewColumns/misc.py index a2e297dcc..b03714a9b 100644 --- a/gui/builtinViewColumns/misc.py +++ b/gui/builtinViewColumns/misc.py @@ -538,11 +538,11 @@ class Miscellanea(ViewColumn): tooltip = "Optimal signature radius" return text, tooltip elif itemGroup in ("Frequency Mining Laser", "Strip Miner", "Mining Laser", "Gas Cloud Scoops", "Mining Drone", "Gas Cloud Harvesters"): - yps = stuff.miningYPS + yps = stuff.getMiningYPS(ignoreState=True) if not yps: return "", None yph = yps * 3600 - wps = stuff.miningWPS + wps = stuff.getMiningWPS(ignoreState=True) wph = wps * 3600 textParts = [] textParts.append(formatAmount(yps, 3, 0, 3))