From 7a8baac5bd6cd1f8c6ac6974fcc48fe6ed880e9d Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Thu, 13 Dec 2018 13:54:53 +0300 Subject: [PATCH] Rework way we pass spoolup options, so that it's possible to prefer passed values or on-module values as needed --- ...hipmoduleremotearmormutadaptiverepairer.py | 11 +++-- eos/saveddata/fit.py | 44 +++++++++---------- eos/saveddata/module.py | 24 ++++------ eos/utils/spoolSupport.py | 18 ++++++++ gui/builtinStatsViews/firepowerViewFull.py | 24 +++++----- gui/builtinStatsViews/outgoingViewFull.py | 32 +++++++------- gui/builtinStatsViews/outgoingViewMinimal.py | 32 +++++++------- gui/builtinViewColumns/misc.py | 25 +++++++---- 8 files changed, 117 insertions(+), 93 deletions(-) diff --git a/eos/effects/shipmoduleremotearmormutadaptiverepairer.py b/eos/effects/shipmoduleremotearmormutadaptiverepairer.py index baf975c10..11ac91052 100644 --- a/eos/effects/shipmoduleremotearmormutadaptiverepairer.py +++ b/eos/effects/shipmoduleremotearmormutadaptiverepairer.py @@ -4,7 +4,7 @@ # Modules from group: Mutadaptive Remote Armor Repairer (5 of 5) -from eos.utils.spoolSupport import SpoolType, calculateSpoolup +from eos.utils.spoolSupport import SpoolType, SpoolOptions, calculateSpoolup, resolveSpoolOptions type = "projected", "active" @@ -16,11 +16,14 @@ def handler(fit, container, context, **kwargs): cycleTime = container.getModifiedItemAttr("duration") / 1000.0 repSpoolMax = container.getModifiedItemAttr("repairMultiplierBonusMax") repSpoolPerCycle = container.getModifiedItemAttr("repairMultiplierBonusPerCycle") - rps = repAmountBase * (1 + calculateSpoolup(repSpoolMax, repSpoolPerCycle, cycleTime, container.spoolType, container.spoolAmount)[0]) / cycleTime + # TODO: fetch spoolup option + defaultSpoolValue = 1 + spoolType, spoolAmount = resolveSpoolOptions( + SpoolOptions(SpoolType.SCALE, defaultSpoolValue, False), + container) + rps = repAmountBase * (1 + calculateSpoolup(repSpoolMax, repSpoolPerCycle, cycleTime, spoolType, spoolAmount)[0]) / cycleTime rpsPreSpool = repAmountBase * (1 + calculateSpoolup(repSpoolMax, repSpoolPerCycle, cycleTime, SpoolType.SCALE, 0)[0]) / cycleTime rpsFullSpool = repAmountBase * (1 + calculateSpoolup(repSpoolMax, repSpoolPerCycle, cycleTime, SpoolType.SCALE, 1)[0]) / cycleTime - # TODO: use spoolup options to fetch main value - rps = rpsFullSpool fit.extraAttributes.increase("armorRepair", rps, **kwargs) fit.extraAttributes.increase("armorRepairPreSpool", rpsPreSpool, **kwargs) fit.extraAttributes.increase("armorRepairFullSpool", rpsFullSpool, **kwargs) diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index 612e33541..4f2b56549 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -273,15 +273,15 @@ class Fit(object): def projectedFighters(self): return self.__projectedFighters - def getWeaponDps(self, spoolType=None, spoolAmount=None): - if (spoolType, spoolAmount) not in self.__weaponDpsMap: - self.calculateWeaponDmgStats(spoolType, spoolAmount) - return self.__weaponDpsMap[(spoolType, spoolAmount)] + def getWeaponDps(self, spoolOptions=None): + if spoolOptions not in self.__weaponDpsMap: + self.calculateWeaponDmgStats(spoolOptions) + return self.__weaponDpsMap[spoolOptions] - def getWeaponVolley(self, spoolType=None, spoolAmount=None): - if (spoolType, spoolAmount) not in self.__weaponVolleyMap: - self.calculateWeaponDmgStats(spoolType, spoolAmount) - return self.__weaponVolleyMap[(spoolType, spoolAmount)] + def getWeaponVolley(self, spoolOptions=None): + if spoolOptions not in self.__weaponVolleyMap: + self.calculateWeaponDmgStats(spoolOptions) + return self.__weaponVolleyMap[spoolOptions] def getDroneDps(self): if self.__droneDps is None: @@ -293,11 +293,11 @@ class Fit(object): self.calculateDroneDmgStats() return self.__droneVolley - def getTotalDps(self, spoolType=None, spoolAmount=None): - return self.getDroneDps() + self.getWeaponDps(spoolType=spoolType, spoolAmount=spoolAmount) + def getTotalDps(self, spoolOptions=None): + return self.getDroneDps() + self.getWeaponDps(spoolOptions=spoolOptions) - def getTotalVolley(self, spoolType=None, spoolAmount=None): - return self.getDroneVolley() + self.getWeaponVolley(spoolType=spoolType, spoolAmount=spoolAmount) + def getTotalVolley(self, spoolOptions=None): + return self.getDroneVolley() + self.getWeaponVolley(spoolOptions=spoolOptions) @property def minerYield(self): @@ -1218,12 +1218,12 @@ class Fit(object): self.__capStable = True self.__capState = 100 - def getRemoteReps(self, spoolType=None, spoolAmount=None): - if (spoolType, spoolAmount) not in self.__remoteRepMap: + def getRemoteReps(self, spoolOptions=None): + if spoolOptions not in self.__remoteRepMap: remoteReps = {} for module in self.modules: - rrType, rrAmount, spoolTime = module.getRemoteReps(spoolType=spoolType, spoolAmount=spoolAmount) + rrType, rrAmount, spoolTime = module.getRemoteReps(spoolOptions=spoolOptions) if rrType: if rrType not in remoteReps: remoteReps[rrType] = 0 @@ -1236,9 +1236,9 @@ class Fit(object): remoteReps[rrType] = 0 remoteReps[rrType] += rrAmount - self.__remoteRepMap[(spoolType, spoolAmount)] = remoteReps + self.__remoteRepMap[spoolOptions] = remoteReps - return self.__remoteRepMap[(spoolType, spoolAmount)] + return self.__remoteRepMap[spoolOptions] @property def hp(self): @@ -1443,16 +1443,16 @@ class Fit(object): self.__minerYield = minerYield self.__droneYield = droneYield - def calculateWeaponDmgStats(self, spoolType, spoolAmount): + def calculateWeaponDmgStats(self, spoolOptions): weaponVolley = DmgTypes(0, 0, 0, 0) weaponDps = DmgTypes(0, 0, 0, 0) for mod in self.modules: - weaponVolley += mod.getVolley(spoolType=spoolType, spoolAmount=spoolAmount, targetResists=self.targetResists)[0] - weaponDps += mod.getDps(spoolType=spoolType, spoolAmount=spoolAmount, targetResists=self.targetResists)[0] + weaponVolley += mod.getVolley(spoolOptions=spoolOptions, targetResists=self.targetResists)[0] + weaponDps += mod.getDps(spoolOptions=spoolOptions, targetResists=self.targetResists)[0] - self.__weaponVolleyMap[(spoolType, spoolAmount)] = weaponVolley - self.__weaponDpsMap[(spoolType, spoolAmount)] = weaponDps + self.__weaponVolleyMap[spoolOptions] = weaponVolley + self.__weaponDpsMap[spoolOptions] = weaponDps def calculateDroneDmgStats(self): droneVolley = DmgTypes(0, 0, 0, 0) diff --git a/eos/saveddata/module.py b/eos/saveddata/module.py index da30a7863..44aa8b961 100644 --- a/eos/saveddata/module.py +++ b/eos/saveddata/module.py @@ -29,7 +29,7 @@ from eos.modifiedAttributeDict import ChargeAttrShortcut, ItemAttrShortcut, Modi from eos.saveddata.citadel import Citadel from eos.saveddata.mutator import Mutator from eos.utils.float import floatUnerr -from eos.utils.spoolSupport import calculateSpoolup +from eos.utils.spoolSupport import calculateSpoolup, resolveSpoolOptions from eos.utils.stats import DmgTypes pyfalog = Logger(__name__) @@ -432,7 +432,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): return self.__miningyield - def getVolley(self, spoolType=None, spoolAmount=None, targetResists=None, ignoreState=False): + def getVolley(self, spoolOptions=None, targetResists=None, ignoreState=False): if self.isEmpty or (self.state < State.ACTIVE and not ignoreState): return DmgTypes(0, 0, 0, 0), 0 if self.__baseVolley is None: @@ -443,14 +443,11 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): thermal=(dmgGetter("thermalDamage", 0)) * dmgMult, kinetic=(dmgGetter("kineticDamage", 0)) * dmgMult, explosive=(dmgGetter("explosiveDamage", 0)) * dmgMult) + spoolType, spoolAmount = resolveSpoolOptions(spoolOptions, self) spoolBoost, spoolTime = calculateSpoolup( self.getModifiedItemAttr("damageMultiplierBonusMax", 0), self.getModifiedItemAttr("damageMultiplierBonusPerCycle", 0), - self.rawCycleTime / 1000, - spoolType if spoolType is not None else self.spoolType, - # Using spool type as condition as it should define if we're using - # passed spoolup parameters or not - spoolAmount if spoolType is not None else self.spoolAmount) + self.rawCycleTime / 1000, spoolType, spoolAmount) spoolMultiplier = 1 + spoolBoost volley = DmgTypes( em=self.__baseVolley.em * spoolMultiplier * (1 - getattr(targetResists, "emAmount", 0)), @@ -459,8 +456,8 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): explosive=self.__baseVolley.explosive * spoolMultiplier * (1 - getattr(targetResists, "explosiveAmount", 0))) return volley, spoolTime - def getDps(self, spoolType=None, spoolAmount=None, targetResists=None, ignoreState=False): - volley, spoolTime = self.getVolley(spoolType=spoolType, spoolAmount=spoolAmount, targetResists=targetResists, ignoreState=ignoreState) + def getDps(self, spoolOptions=None, targetResists=None, ignoreState=False): + volley, spoolTime = self.getVolley(spoolOptions=spoolOptions, targetResists=targetResists, ignoreState=ignoreState) if not volley: return DmgTypes(0, 0, 0, 0), 0 # Some weapons repeat multiple times in one cycle (bosonic doomsdays). Get the number of times it fires off @@ -473,7 +470,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): explosive=volley.explosive * dpsFactor) return dps, spoolTime - def getRemoteReps(self, spoolType=None, spoolAmount=None, ignoreState=False): + def getRemoteReps(self, spoolOptions=None, ignoreState=False): if self.isEmpty or (self.state < State.ACTIVE and not ignoreState): return (None, 0, 0) @@ -513,14 +510,11 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): spoolTime = 0 if rrType and rrAmount and self.item.group.name == "Mutadaptive Remote Armor Repairer": + spoolType, spoolAmount = resolveSpoolOptions(spoolOptions, self) spoolBoost, spoolTime = calculateSpoolup( self.getModifiedItemAttr("repairMultiplierBonusMax", 0), self.getModifiedItemAttr("repairMultiplierBonusPerCycle", 0), - self.rawCycleTime / 1000, - spoolType if spoolType is not None else self.spoolType, - # Using spool type as condition as it should define if we're using - # passed spoolup parameters or not - spoolAmount if spoolType is not None else self.spoolAmount) + self.rawCycleTime / 1000, spoolType, spoolAmount) rrAmount *= (1 + spoolBoost) return rrType, rrAmount, spoolTime diff --git a/eos/utils/spoolSupport.py b/eos/utils/spoolSupport.py index 62e6d0839..bafc26efc 100644 --- a/eos/utils/spoolSupport.py +++ b/eos/utils/spoolSupport.py @@ -18,11 +18,15 @@ # =============================================================================== +from collections import namedtuple from enum import IntEnum, unique from eos.utils.float import floatUnerr +SpoolOptions = namedtuple('SpoolOptions', ('spoolType', 'spoolAmount', 'force')) + + @unique class SpoolType(IntEnum): SCALE = 0 # [0..1] @@ -48,3 +52,17 @@ def calculateSpoolup(modMaxValue, modStepValue, modCycleTime, spoolType, spoolAm return cycles * modStepValue, cycles * modCycleTime else: return 0, 0 + + +def resolveSpoolOptions(spoolOptions, module): + # Rely on passed options if they are forcing us to do so + if spoolOptions is not None and spoolOptions.force: + return spoolOptions.spoolType, spoolOptions.spoolAmount + # If we're not forced to use options and module has options set, prefer on-module values + elif module is not None and module.spoolType is not None: + return module.spoolType, module.spoolAmount + # Otherwise - rely on passed options + elif spoolOptions is not None: + return spoolOptions.spoolType, spoolOptions.spoolAmount + else: + return None, None diff --git a/gui/builtinStatsViews/firepowerViewFull.py b/gui/builtinStatsViews/firepowerViewFull.py index 72c92be4a..0db0d9735 100644 --- a/gui/builtinStatsViews/firepowerViewFull.py +++ b/gui/builtinStatsViews/firepowerViewFull.py @@ -23,7 +23,7 @@ import gui.mainFrame from gui.statsView import StatsView from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount, roundToPrec -from eos.utils.spoolSupport import SpoolType +from eos.utils.spoolSupport import SpoolType, SpoolOptions from service.fit import Fit @@ -157,12 +157,14 @@ class FirepowerViewFull(StatsView): formatAmount(preSpool, prec, lowest, highest), formatAmount(fullSpool, prec, lowest, highest)) + # TODO: fetch spoolup option + defaultSpoolValue = 1 stats = ( ( "labelFullDpsWeapon", - lambda: fit.getWeaponDps().total, - lambda: fit.getWeaponDps(spoolType=SpoolType.SCALE, spoolAmount=0).total, - lambda: fit.getWeaponDps(spoolType=SpoolType.SCALE, spoolAmount=1).total, + lambda: fit.getWeaponDps(spoolOptions=SpoolOptions(SpoolType.SCALE, defaultSpoolValue, False)).total, + lambda: fit.getWeaponDps(spoolOptions=SpoolOptions(SpoolType.SCALE, 0, True)).total, + lambda: fit.getWeaponDps(spoolOptions=SpoolOptions(SpoolType.SCALE, 1, True)).total, 3, 0, 0, "%s DPS"), ( "labelFullDpsDrone", @@ -172,15 +174,15 @@ class FirepowerViewFull(StatsView): 3, 0, 0, "%s DPS"), ( "labelFullVolleyTotal", - lambda: fit.getTotalVolley().total, - lambda: fit.getTotalVolley(spoolType=SpoolType.SCALE, spoolAmount=0).total, - lambda: fit.getTotalVolley(spoolType=SpoolType.SCALE, spoolAmount=1).total, + lambda: fit.getTotalVolley(spoolOptions=SpoolOptions(SpoolType.SCALE, defaultSpoolValue, False)).total, + lambda: fit.getTotalVolley(spoolOptions=SpoolOptions(SpoolType.SCALE, 0, True)).total, + lambda: fit.getTotalVolley(spoolOptions=SpoolOptions(SpoolType.SCALE, 1, True)).total, 3, 0, 0, "%s"), ( "labelFullDpsTotal", - lambda: fit.getTotalDps().total, - lambda: fit.getTotalDps(spoolType=SpoolType.SCALE, spoolAmount=0).total, - lambda: fit.getTotalDps(spoolType=SpoolType.SCALE, spoolAmount=1).total, + lambda: fit.getTotalDps(spoolOptions=SpoolOptions(SpoolType.SCALE, defaultSpoolValue, False)).total, + lambda: fit.getTotalDps(spoolOptions=SpoolOptions(SpoolType.SCALE, 0, True)).total, + lambda: fit.getTotalDps(spoolOptions=SpoolOptions(SpoolType.SCALE, 1, True)).total, 3, 0, 0, "%s")) counter = 0 @@ -189,8 +191,6 @@ 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: use spoolup options to fetch main value - val = fullSpoolVal if self._cachedValues[counter] != val: valueStr = formatAmount(val, prec, lowest, highest) label.SetLabel(valueFormat % valueStr) diff --git a/gui/builtinStatsViews/outgoingViewFull.py b/gui/builtinStatsViews/outgoingViewFull.py index ee07004e4..4c50eb22f 100644 --- a/gui/builtinStatsViews/outgoingViewFull.py +++ b/gui/builtinStatsViews/outgoingViewFull.py @@ -22,33 +22,33 @@ import wx from gui.statsView import StatsView from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount, roundToPrec -from eos.utils.spoolSupport import SpoolType +from eos.utils.spoolSupport import SpoolType, SpoolOptions stats = [ ( "labelRemoteCapacitor", "Capacitor:", "{} GJ/s", "capacitorInfo", "Capacitor restored", - lambda fit: fit.getRemoteReps().get("Capacitor"), - lambda fit: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=0).get("Capacitor", 0), - lambda fit: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=1).get("Capacitor", 0), + lambda fit, spool: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, spool, False)).get("Capacitor"), + lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, 0, True)).get("Capacitor", 0), + lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, 1, True)).get("Capacitor", 0), 3, 0, 0), ( "labelRemoteShield", "Shield:", "{} HP/s", "shieldActive", "Shield restored", - lambda fit: fit.getRemoteReps().get("Shield"), - lambda fit: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=0).get("Shield", 0), - lambda fit: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=1).get("Shield", 0), + lambda fit, spool: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, spool, False)).get("Shield"), + lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, 0, True)).get("Shield", 0), + lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, 1, True)).get("Shield", 0), 3, 0, 0), ( "labelRemoteArmor", "Armor:", "{} HP/s", "armorActive", "Armor restored", - lambda fit: fit.getRemoteReps().get("Armor"), - lambda fit: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=0).get("Armor", 0), - lambda fit: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=1).get("Armor", 0), + lambda fit, spool: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, spool, False)).get("Armor"), + lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, 0, True)).get("Armor", 0), + lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, 1, True)).get("Armor", 0), 3, 0, 0), ( "labelRemoteHull", "Hull:", "{} HP/s", "hullActive", "Hull restored", - lambda fit: fit.getRemoteReps().get("Hull"), - lambda fit: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=0).get("Hull", 0), - lambda fit: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=1).get("Hull", 0), + lambda fit, spool: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, spool, False)).get("Hull"), + lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, 0, True)).get("Hull", 0), + lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, 1, True)).get("Hull", 0), 3, 0, 0)] @@ -101,14 +101,14 @@ class OutgoingViewFull(StatsView): formatAmount(preSpool, prec, lowest, highest), formatAmount(fullSpool, prec, lowest, highest)) + # TODO: fetch spoolup option + defaultSpoolValue = 1 counter = 0 for labelName, labelDesc, valueFormat, image, tooltip, val, preSpoolVal, fullSpoolVal, prec, lowest, highest in stats: label = getattr(self, labelName) - val = val(fit) if fit is not None else 0 + val = val(fit, defaultSpoolValue) if fit is not None else 0 preSpoolVal = preSpoolVal(fit) if fit is not None else 0 fullSpoolVal = fullSpoolVal(fit) if fit is not None else 0 - # TODO: use spoolup options to fetch main value - val = fullSpoolVal if self._cachedValues[counter] != val: label.SetLabel(valueFormat.format(formatAmount(val, prec, lowest, highest))) tooltipText = formatTooltip(tooltip, preSpoolVal, fullSpoolVal, prec, lowest, highest) diff --git a/gui/builtinStatsViews/outgoingViewMinimal.py b/gui/builtinStatsViews/outgoingViewMinimal.py index 2a8dc35c7..67cac8f9c 100644 --- a/gui/builtinStatsViews/outgoingViewMinimal.py +++ b/gui/builtinStatsViews/outgoingViewMinimal.py @@ -21,33 +21,33 @@ import wx from gui.statsView import StatsView from gui.utils.numberFormatter import formatAmount, roundToPrec -from eos.utils.spoolSupport import SpoolType +from eos.utils.spoolSupport import SpoolType, SpoolOptions stats = [ ( "labelRemoteCapacitor", "Capacitor:", "{} GJ/s", "capacitorInfo", "Capacitor restored", - lambda fit: fit.getRemoteReps().get("Capacitor"), - lambda fit: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=0).get("Capacitor", 0), - lambda fit: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=1).get("Capacitor", 0), + lambda fit, spool: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, spool, False)).get("Capacitor"), + lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, 0, True)).get("Capacitor", 0), + lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, 1, True)).get("Capacitor", 0), 3, 0, 0), ( "labelRemoteShield", "Shield:", "{} HP/s", "shieldActive", "Shield restored", - lambda fit: fit.getRemoteReps().get("Shield"), - lambda fit: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=0).get("Shield", 0), - lambda fit: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=1).get("Shield", 0), + lambda fit, spool: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, spool, False)).get("Shield"), + lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, 0, True)).get("Shield", 0), + lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, 1, True)).get("Shield", 0), 3, 0, 0), ( "labelRemoteArmor", "Armor:", "{} HP/s", "armorActive", "Armor restored", - lambda fit: fit.getRemoteReps().get("Armor"), - lambda fit: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=0).get("Armor", 0), - lambda fit: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=1).get("Armor", 0), + lambda fit, spool: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, spool, False)).get("Armor"), + lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, 0, True)).get("Armor", 0), + lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, 1, True)).get("Armor", 0), 3, 0, 0), ( "labelRemoteHull", "Hull:", "{} HP/s", "hullActive", "Hull restored", - lambda fit: fit.getRemoteReps().get("Hull"), - lambda fit: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=0).get("Hull", 0), - lambda fit: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=1).get("Hull", 0), + lambda fit, spool: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, spool, False)).get("Hull"), + lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, 0, True)).get("Hull", 0), + lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SCALE, 1, True)).get("Hull", 0), 3, 0, 0)] @@ -100,14 +100,14 @@ class OutgoingViewMinimal(StatsView): formatAmount(preSpool, prec, lowest, highest), formatAmount(fullSpool, prec, lowest, highest)) + # TODO: fetch spoolup option + defaultSpoolValue = 1 counter = 0 for labelName, labelDesc, valueFormat, image, tooltip, val, preSpoolVal, fullSpoolVal, prec, lowest, highest in stats: label = getattr(self, labelName) - val = val(fit) if fit is not None else 0 + val = val(fit, defaultSpoolValue) if fit is not None else 0 preSpoolVal = preSpoolVal(fit) if fit is not None else 0 fullSpoolVal = fullSpoolVal(fit) if fit is not None else 0 - # TODO: use spoolup options to fetch main value - val = fullSpoolVal if self._cachedValues[counter] != val: label.SetLabel(valueFormat.format(formatAmount(val, prec, lowest, highest))) tooltipText = formatTooltip(tooltip, preSpoolVal, fullSpoolVal, prec, lowest, highest) diff --git a/gui/builtinViewColumns/misc.py b/gui/builtinViewColumns/misc.py index 70ea24c3d..c4d205fc8 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.utils.spoolSupport import SpoolType +from eos.utils.spoolSupport import SpoolType, SpoolOptions class Miscellanea(ViewColumn): @@ -115,8 +115,11 @@ class Miscellanea(ViewColumn): text = "{0}".format(formatAmount(trackingSpeed, 3, 0, 3)) tooltip = "tracking speed" info.append((text, tooltip)) - # TODO: use spoolup options to fetch main value - volley, spoolTime = stuff.getVolley(spoolType=SpoolType.SCALE, spoolAmount=1, ignoreState=True) + # TODO: fetch spoolup option + defaultSpoolValue = 1 + spoolTime = stuff.getVolley( + spoolOptions=SpoolOptions(SpoolType.SCALE, defaultSpoolValue, False), + ignoreState=True)[1] if spoolTime: text = "{0}s".format(formatAmount(spoolTime, 3, 0, 3)) tooltip = "spool up time" @@ -336,11 +339,17 @@ class Miscellanea(ViewColumn): tooltip = "Armor repaired per second" return text, tooltip elif itemGroup == "Mutadaptive Remote Armor Repairer": - rrType, rps, spoolTime = stuff.getRemoteReps(ignoreState=True) - rrTypePre, rpsPre, spoolTimePre = stuff.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=0, ignoreState=True) - rrTypeFull, rpsFull, spoolTimeFull = stuff.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=1, ignoreState=True) - # TODO: use spoolup options to fetch main value - rrType, rps, spoolTime = rrTypeFull, rpsFull, spoolTimeFull + # TODO: fetch spoolup option + defaultSpoolValue = 1 + rrType, rps, spoolTime = stuff.getRemoteReps( + spoolOptions=SpoolOptions(SpoolType.SCALE, defaultSpoolValue, False), + ignoreState=True) + rrTypePre, rpsPre, spoolTimePre = stuff.getRemoteReps( + spoolOptions=SpoolOptions(SpoolType.SCALE, 0, True), + ignoreState=True) + rrTypeFull, rpsFull, spoolTimeFull = stuff.getRemoteReps( + spoolOptions=SpoolOptions(SpoolType.SCALE, 1, True), + ignoreState=True) if not rps: return "", None text = []