From 70831bb5e41ae6dcb18173e32031130f8aa12ba3 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Wed, 12 Dec 2018 09:20:48 +0300 Subject: [PATCH] Show spoolup for RR output stats --- gui/builtinStatsViews/firepowerViewFull.py | 17 ++-- gui/builtinStatsViews/outgoingViewFull.py | 90 ++++++++++---------- gui/builtinStatsViews/outgoingViewMinimal.py | 90 ++++++++++---------- 3 files changed, 100 insertions(+), 97 deletions(-) diff --git a/gui/builtinStatsViews/firepowerViewFull.py b/gui/builtinStatsViews/firepowerViewFull.py index 86caa6a9e..d27f63b7b 100644 --- a/gui/builtinStatsViews/firepowerViewFull.py +++ b/gui/builtinStatsViews/firepowerViewFull.py @@ -22,7 +22,7 @@ import wx import gui.mainFrame from gui.statsView import StatsView from gui.bitmap_loader import BitmapLoader -from gui.utils.numberFormatter import formatAmount +from gui.utils.numberFormatter import formatAmount, roundToPrec from eos.utils.spoolSupport import SpoolType from service.fit import Fit @@ -149,14 +149,14 @@ class FirepowerViewFull(StatsView): else: self.stEff.Hide() - def dpsToolTip(preSpool, postSpool, statName, fmt_options): - if preSpool == postSpool: - return None + def dpsToolTip(preSpool, fullSpool, statName, prec, lowest, highest): + if roundToPrec(preSpool, prec) == roundToPrec(fullSpool, prec): + return "" else: return "Spoolup {}: {}-{}".format( statName, - formatAmount(preSpool, *fmt_options), - formatAmount(postSpool, *fmt_options)) + formatAmount(preSpool, prec, lowest, highest), + formatAmount(fullSpool, prec, lowest, highest)) stats = ( ( @@ -195,9 +195,8 @@ class FirepowerViewFull(StatsView): if self._cachedValues[counter] != val: valueStr = formatAmount(val, prec, lowest, highest) label.SetLabel(valueFormat % valueStr) - valueStrTooltip = dpsToolTip(preSpoolVal, fullSpoolVal, statName, (prec, lowest, highest)) - if valueStrTooltip: - label.SetToolTip(wx.ToolTip(valueStrTooltip)) + tooltipText = dpsToolTip(preSpoolVal, fullSpoolVal, statName, prec, lowest, highest) + label.SetToolTip(wx.ToolTip(tooltipText)) self._cachedValues[counter] = val counter += 1 diff --git a/gui/builtinStatsViews/outgoingViewFull.py b/gui/builtinStatsViews/outgoingViewFull.py index b05e46a67..d48d32975 100644 --- a/gui/builtinStatsViews/outgoingViewFull.py +++ b/gui/builtinStatsViews/outgoingViewFull.py @@ -21,10 +21,37 @@ import wx from gui.statsView import StatsView from gui.bitmap_loader import BitmapLoader -from gui.utils.numberFormatter import formatAmount +from gui.utils.numberFormatter import formatAmount, roundToPrec from eos.utils.spoolSupport import SpoolType +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), + 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), + 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), + 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), + 3, 0, 0)] + + class OutgoingViewFull(StatsView): name = "outgoingViewFull" @@ -49,68 +76,43 @@ class OutgoingViewFull(StatsView): contentSizer.Add(sizerOutgoing, 0, wx.EXPAND, 0) - counter = 0 - - rr_list = [ - ("labelRemoteCapacitor", "Capacitor:", "0 GJ/s", "capacitorInfo", "Capacitor restored"), - ("labelRemoteShield", "Shield:", "0 HP/s", "shieldActive", "Shield restored"), - ("labelRemoteArmor", "Armor:", "0 HP/s", "armorActive", "Armor restored"), - ("labelRemoteHull", "Hull:", "0 HP/s", "hullActive", "Hull restored"), - ] - - for labelName, labelDesc, labelAmount, image, tooltip in rr_list: + for labelName, labelDesc, valueFormat, image, tooltip, val, preSpoolVal, fullSpoolVal, prec, lowest, highest in stats: baseBox = wx.BoxSizer(wx.VERTICAL) baseBox.Add(BitmapLoader.getStaticBitmap("%s_big" % image, parent, "gui"), 0, wx.ALIGN_CENTER) - lbl = wx.StaticText(parent, wx.ID_ANY, labelAmount) + lbl = wx.StaticText(parent, wx.ID_ANY, valueFormat.format(0)) lbl.SetToolTip(wx.ToolTip(tooltip)) setattr(self, labelName, lbl) baseBox.Add(lbl, 0, wx.ALIGN_CENTER) self._cachedValues.append(0) - counter += 1 sizerOutgoing.Add(baseBox, 1, wx.ALIGN_LEFT) def refreshPanel(self, fit): - stats = [ - ( - "labelRemoteArmor", - lambda: fit.getRemoteReps().get("Armor"), - lambda: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=0).get("Armor", 0), - lambda: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=1).get("Armor", 0), - 3, 0, 0, "%s HP/s", None), - ( - "labelRemoteShield", - lambda: fit.getRemoteReps().get("Shield"), - lambda: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=0).get("Shield", 0), - lambda: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=1).get("Shield", 0), - 3, 0, 0, "%s HP/s", None), - ( - "labelRemoteHull", - lambda: fit.getRemoteReps().get("Hull"), - lambda: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=0).get("Hull", 0), - lambda: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=1).get("Hull", 0), - 3, 0, 0, "%s HP/s", None), - ( - "labelRemoteCapacitor", - lambda: fit.getRemoteReps().get("Capacitor"), - lambda: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=0).get("Capacitor", 0), - lambda: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=1).get("Capacitor", 0), - 3, 0, 0, "%s GJ/s", None)] + + def formatTooltip(text, preSpool, fullSpool, prec, lowest, highest): + if roundToPrec(preSpool, prec) == roundToPrec(fullSpool, prec): + return text + else: + return "{}, spoolup {}-{}".format( + text, + formatAmount(preSpool, prec, lowest, highest), + formatAmount(fullSpool, prec, lowest, highest)) counter = 0 - for labelName, val, preSpoolVal, fullSpoolVal, prec, lowest, highest, valueFormat, altFormat in stats: + for labelName, labelDesc, valueFormat, image, tooltip, val, preSpoolVal, fullSpoolVal, prec, lowest, highest in stats: label = getattr(self, labelName) - 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 + val = val(fit) 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: - valueStr = formatAmount(val, prec, lowest, highest) - label.SetLabel(valueFormat % valueStr) + label.SetLabel(valueFormat.format(formatAmount(val, prec, lowest, highest))) + tooltipText = formatTooltip(tooltip, preSpoolVal, fullSpoolVal, prec, lowest, highest) + label.SetToolTip(wx.ToolTip(tooltipText)) self._cachedValues[counter] = val counter += 1 self.panel.Layout() diff --git a/gui/builtinStatsViews/outgoingViewMinimal.py b/gui/builtinStatsViews/outgoingViewMinimal.py index 08bfae479..42c0f2a8a 100644 --- a/gui/builtinStatsViews/outgoingViewMinimal.py +++ b/gui/builtinStatsViews/outgoingViewMinimal.py @@ -20,10 +20,37 @@ # noinspection PyPackageRequirements import wx from gui.statsView import StatsView -from gui.utils.numberFormatter import formatAmount +from gui.utils.numberFormatter import formatAmount, roundToPrec from eos.utils.spoolSupport import SpoolType +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), + 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), + 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), + 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), + 3, 0, 0)] + + class OutgoingViewMinimal(StatsView): name = "outgoingViewMinimal" @@ -48,68 +75,43 @@ class OutgoingViewMinimal(StatsView): contentSizer.Add(sizerOutgoing, 0, wx.EXPAND, 0) - counter = 0 - - rr_list = [ - ("labelRemoteCapacitor", "Capacitor:", "0 GJ/s", "capacitorInfo", "Capacitor restored"), - ("labelRemoteShield", "Shield:", "0 HP/s", "shieldActive", "Shield restored"), - ("labelRemoteArmor", "Armor:", "0 HP/s", "armorActive", "Armor restored"), - ("labelRemoteHull", "Hull:", "0 HP/s", "hullActive", "Hull restored"), - ] - - for labelName, labelDesc, labelAmount, image, tooltip in rr_list: + for labelName, labelDesc, valueFormat, image, tooltip, val, preSpoolVal, fullSpoolVal, prec, lowest, highest in stats: baseBox = wx.BoxSizer(wx.VERTICAL) baseBox.Add(wx.StaticText(contentPanel, wx.ID_ANY, labelDesc), 0, wx.ALIGN_CENTER) - lbl = wx.StaticText(parent, wx.ID_ANY, labelAmount) + lbl = wx.StaticText(parent, wx.ID_ANY, valueFormat.format(0)) lbl.SetToolTip(wx.ToolTip(tooltip)) setattr(self, labelName, lbl) baseBox.Add(lbl, 0, wx.ALIGN_CENTER) self._cachedValues.append(0) - counter += 1 sizerOutgoing.Add(baseBox, 1, wx.ALIGN_LEFT) def refreshPanel(self, fit): - stats = [ - ( - "labelRemoteArmor", - lambda: fit.getRemoteReps().get("Armor"), - lambda: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=0).get("Armor", 0), - lambda: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=1).get("Armor", 0), - 3, 0, 0, "%s HP/s", None), - ( - "labelRemoteShield", - lambda: fit.getRemoteReps().get("Shield"), - lambda: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=0).get("Shield", 0), - lambda: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=1).get("Shield", 0), - 3, 0, 0, "%s HP/s", None), - ( - "labelRemoteHull", - lambda: fit.getRemoteReps().get("Hull"), - lambda: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=0).get("Hull", 0), - lambda: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=1).get("Hull", 0), - 3, 0, 0, "%s HP/s", None), - ( - "labelRemoteCapacitor", - lambda: fit.getRemoteReps().get("Capacitor"), - lambda: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=0).get("Capacitor", 0), - lambda: fit.getRemoteReps(spoolType=SpoolType.SCALE, spoolAmount=1).get("Capacitor", 0), - 3, 0, 0, "%s GJ/s", None)] + + def formatTooltip(text, preSpool, fullSpool, prec, lowest, highest): + if roundToPrec(preSpool, prec) == roundToPrec(fullSpool, prec): + return text + else: + return "{}, spoolup {}-{}".format( + text, + formatAmount(preSpool, prec, lowest, highest), + formatAmount(fullSpool, prec, lowest, highest)) counter = 0 - for labelName, val, preSpoolVal, fullSpoolVal, prec, lowest, highest, valueFormat, altFormat in stats: + for labelName, labelDesc, valueFormat, image, tooltip, val, preSpoolVal, fullSpoolVal, prec, lowest, highest in stats: label = getattr(self, labelName) - 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 + val = val(fit) 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: - valueStr = formatAmount(val, prec, lowest, highest) - label.SetLabel(valueFormat % valueStr) + label.SetLabel(valueFormat.format(formatAmount(val, prec, lowest, highest))) + tooltipText = formatTooltip(tooltip, preSpoolVal, fullSpoolVal, prec, lowest, highest) + label.SetToolTip(wx.ToolTip(tooltipText)) self._cachedValues[counter] = val counter += 1 self.panel.Layout()