diff --git a/eos/saveddata/drone.py b/eos/saveddata/drone.py index 3e959bec3..289674f1e 100644 --- a/eos/saveddata/drone.py +++ b/eos/saveddata/drone.py @@ -35,6 +35,7 @@ class Drone(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): self.amount = 0 self.amountActive = 0 self.__dps = None + self.__volley = None self.__miningyield = None self.projected = False self.__itemModifiedAttributes = ModifiedAttributeDict() @@ -43,6 +44,7 @@ class Drone(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): @reconstructor def init(self): self.__dps = None + self.__volley = None self.__miningyield = None self.__item = None self.__charge = None @@ -115,6 +117,8 @@ class Drone(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): def damageStats(self, targetResists = None): if self.__dps == None: + self.__volley = 0 + self.__dps = 0 if self.dealsDamage is True and self.amountActive > 0: if self.hasAmmo: attr = "missileLaunchDuration" @@ -128,11 +132,10 @@ class Drone(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): volley = sum(map(lambda d: (getter("%sDamage"%d) or 0) * (1-getattr(targetResists, "%sAmount"%d, 0)), self.DAMAGE_TYPES)) volley *= self.amountActive volley *= self.getModifiedItemAttr("damageMultiplier") or 1 + self.__volley = volley self.__dps = volley / (cycleTime / 1000.0) - else: - self.__dps = 0 - return self.__dps + return self.__dps, self.__volley @property def miningStats(self): @@ -186,6 +189,7 @@ class Drone(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): def clear(self): self.__dps = None + self.__volley = None self.__miningyield = None self.itemModifiedAttributes.clear() self.chargeModifiedAttributes.clear() diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index d61950de6..8be6266d0 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -80,6 +80,7 @@ class Fit(object): self.__minerYield = None self.__weaponVolley = None self.__droneDPS = None + self.__droneVolley = None self.__droneYield = None self.__sustainableTank = None self.__effectiveSustainableTank = None @@ -109,6 +110,7 @@ class Fit(object): self.__weaponDPS = None self.__weaponVolley = None self.__droneDPS = None + self.__droneVolley = None @property def damagePattern(self): @@ -190,10 +192,21 @@ class Fit(object): return self.__droneDPS + @property + def droneVolley(self): + if self.__droneVolley is None: + self.calculateWeaponStats() + + return self.__droneVolley + @property def totalDPS(self): return self.droneDPS + self.weaponDPS + @property + def totalVolley(self): + return self.droneVolley + self.weaponVolley + @property def minerYield(self): if self.__minerYield is None: @@ -279,6 +292,7 @@ class Fit(object): self.__effectiveSustainableTank = None self.__sustainableTank = None self.__droneDPS = None + self.__droneVolley = None self.__droneYield = None self.__ehp = None self.__calculated = False @@ -821,6 +835,7 @@ class Fit(object): weaponDPS = 0 droneDPS = 0 weaponVolley = 0 + droneVolley = 0 for mod in self.modules: dps, volley = mod.damageStats(self.targetResists) @@ -828,11 +843,14 @@ class Fit(object): weaponVolley += volley for drone in self.drones: - droneDPS += drone.damageStats(self.targetResists) + dps, volley = drone.damageStats(self.targetResists) + droneDPS += dps + droneVolley += volley self.__weaponDPS = weaponDPS self.__weaponVolley = weaponVolley self.__droneDPS = droneDPS + self.__droneVolley = droneVolley @property def fits(self): diff --git a/gui/builtinStatsViews/firepowerViewFull.py b/gui/builtinStatsViews/firepowerViewFull.py index 7f18b6a0c..e6e1df75a 100644 --- a/gui/builtinStatsViews/firepowerViewFull.py +++ b/gui/builtinStatsViews/firepowerViewFull.py @@ -30,6 +30,7 @@ class FirepowerViewFull(StatsView): StatsView.__init__(self) self.parent = parent self._cachedValues = [] + def getHeaderText(self, fit): return "Firepower" @@ -44,7 +45,7 @@ class FirepowerViewFull(StatsView): self.headerPanel = headerPanel headerContentSizer = wx.BoxSizer(wx.HORIZONTAL) hsizer = headerPanel.GetSizer() - hsizer.Add(headerContentSizer,0,0,0) + hsizer.Add(headerContentSizer, 0, 0, 0) self.stEff = wx.StaticText(headerPanel, wx.ID_ANY, "( Effective )") headerContentSizer.Add(self.stEff) headerPanel.GetParent().AddToggleItem(self.stEff) @@ -54,7 +55,7 @@ class FirepowerViewFull(StatsView): sizerFirepower = wx.FlexGridSizer(1, 4) sizerFirepower.AddGrowableCol(1) - contentSizer.Add( sizerFirepower, 0, wx.EXPAND, 0) + contentSizer.Add(sizerFirepower, 0, wx.EXPAND, 0) counter = 0 @@ -73,10 +74,9 @@ class FirepowerViewFull(StatsView): box.Add(hbox, 1, wx.ALIGN_CENTER) lbl = wx.StaticText(parent, wx.ID_ANY, "0.0 DPS") - setattr(self, "label%sDps%s" % (panel.capitalize() ,damageType.capitalize()), lbl) + setattr(self, "label%sDps%s" % (panel.capitalize(), damageType.capitalize()), lbl) hbox.Add(lbl, 0, wx.ALIGN_CENTER) -# hbox.Add(wx.StaticText(parent, wx.ID_ANY, " DPS"), 0, wx.ALIGN_CENTER) self._cachedValues.append(0) counter += 1 targetSizer = sizerFirepower @@ -143,7 +143,7 @@ class FirepowerViewFull(StatsView): stats = (("labelFullDpsWeapon", lambda: fit.weaponDPS, 3, 0, 0, "%s DPS",None), ("labelFullDpsDrone", lambda: fit.droneDPS, 3, 0, 0, "%s DPS", None), - ("labelFullVolleyTotal", lambda: fit.weaponVolley, 3, 0, 0, "%s", "Volley: %.1f"), + ("labelFullVolleyTotal", lambda: fit.totalVolley, 3, 0, 0, "%s", "Volley: %.1f"), ("labelFullDpsTotal", lambda: fit.totalDPS, 3, 0, 0, "%s", None)) # See GH issue # #if fit is not None and fit.totalYield > 0: