Add spoolup support to misc column tooltips

This commit is contained in:
DarkPhoenix
2018-12-12 00:32:50 +03:00
parent 5a0670838d
commit 0a23c3cabb
6 changed files with 41 additions and 52 deletions

View File

@@ -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

View File

@@ -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):

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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")