Expose damage output composition to UI
This commit is contained in:
@@ -34,6 +34,7 @@ from eos.saveddata.drone import Drone
|
||||
from eos.saveddata.character import Character
|
||||
from eos.saveddata.citadel import Citadel
|
||||
from eos.saveddata.module import Module, State, Slot, Hardpoint
|
||||
from eos.utils.stats import DmgTypes
|
||||
from logbook import Logger
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
@@ -1529,27 +1530,27 @@ class Fit(object):
|
||||
self.__droneYield = droneYield
|
||||
|
||||
def calculateWeaponDmgStats(self, spoolType, spoolAmount):
|
||||
weaponVolley = 0
|
||||
weaponDps = 0
|
||||
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).total
|
||||
weaponDps += mod.getDps(spoolType=spoolType, spoolAmount=spoolAmount, targetResists=self.targetResists).total
|
||||
weaponVolley += mod.getVolley(spoolType=spoolType, spoolAmount=spoolAmount, targetResists=self.targetResists)
|
||||
weaponDps += mod.getDps(spoolType=spoolType, spoolAmount=spoolAmount, targetResists=self.targetResists)
|
||||
|
||||
self.__weaponVolleyMap[(spoolType, spoolAmount)] = weaponVolley
|
||||
self.__weaponDpsMap[(spoolType, spoolAmount)] = weaponDps
|
||||
|
||||
def calculateDroneDmgStats(self):
|
||||
droneVolley = 0
|
||||
droneDps = 0
|
||||
droneVolley = DmgTypes(0, 0, 0, 0)
|
||||
droneDps = DmgTypes(0, 0, 0, 0)
|
||||
|
||||
for drone in self.drones:
|
||||
droneVolley += drone.getVolley(targetResists=self.targetResists).total
|
||||
droneDps += drone.getDps(targetResists=self.targetResists).total
|
||||
droneVolley += drone.getVolley(targetResists=self.targetResists)
|
||||
droneDps += drone.getDps(targetResists=self.targetResists)
|
||||
|
||||
for fighter in self.fighters:
|
||||
droneVolley += fighter.getVolley(targetResists=self.targetResists).total
|
||||
droneDps += fighter.getDps(targetResists=self.targetResists).total
|
||||
droneVolley += fighter.getVolley(targetResists=self.targetResists)
|
||||
droneDps += fighter.getDps(targetResists=self.targetResists)
|
||||
|
||||
self.__droneDps = droneDps
|
||||
self.__droneVolley = droneVolley
|
||||
|
||||
@@ -26,7 +26,7 @@ class DmgTypes:
|
||||
self.thermal = thermal
|
||||
self.kinetic = kinetic
|
||||
self.explosive = explosive
|
||||
self.total = em + thermal + kinetic + explosive
|
||||
self._calcTotal()
|
||||
|
||||
# Iterator is needed to support tuple-style unpacking
|
||||
def __iter__(self):
|
||||
@@ -51,11 +51,20 @@ class DmgTypes:
|
||||
self.em, self.thermal, self.kinetic,
|
||||
self.explosive, self.total))
|
||||
|
||||
def __hash__(self):
|
||||
return hash((
|
||||
DmgTypes.__qualname__,
|
||||
self.em,
|
||||
self.thermal,
|
||||
self.kinetic,
|
||||
self.explosive,
|
||||
self.total))
|
||||
def _calcTotal(self):
|
||||
self.total = self.em + self.thermal + self.kinetic + self.explosive
|
||||
|
||||
def __add__(self, other):
|
||||
return type(self)(
|
||||
em=self.em + other.em,
|
||||
thermal=self.thermal + other.thermal,
|
||||
kinetic=self.kinetic + other.kinetic,
|
||||
explosive=self.explosive + other.explosive)
|
||||
|
||||
def __iadd__(self, other):
|
||||
self.em += other.em
|
||||
self.thermal += other.thermal
|
||||
self.kinetic += other.kinetic
|
||||
self.explosive += other.explosive
|
||||
self._calcTotal()
|
||||
return self
|
||||
|
||||
@@ -161,27 +161,27 @@ class FirepowerViewFull(StatsView):
|
||||
stats = (
|
||||
(
|
||||
"labelFullDpsWeapon",
|
||||
lambda: fit.getWeaponDps(),
|
||||
lambda: fit.getWeaponDps(spoolType=SpoolType.SCALE, spoolAmount=0),
|
||||
lambda: fit.getWeaponDps(spoolType=SpoolType.SCALE, spoolAmount=1),
|
||||
lambda: fit.getWeaponDps().total,
|
||||
lambda: fit.getWeaponDps(spoolType=SpoolType.SCALE, spoolAmount=0).total,
|
||||
lambda: fit.getWeaponDps(spoolType=SpoolType.SCALE, spoolAmount=1).total,
|
||||
3, 0, 0, "%s DPS", "DPS"),
|
||||
(
|
||||
"labelFullDpsDrone",
|
||||
lambda: fit.getDroneDps(),
|
||||
lambda: fit.getDroneDps(),
|
||||
lambda: fit.getDroneDps(),
|
||||
lambda: fit.getDroneDps().total,
|
||||
lambda: fit.getDroneDps().total,
|
||||
lambda: fit.getDroneDps().total,
|
||||
3, 0, 0, "%s DPS", "DPS"),
|
||||
(
|
||||
"labelFullVolleyTotal",
|
||||
lambda: fit.getTotalVolley(),
|
||||
lambda: fit.getTotalVolley(spoolType=SpoolType.SCALE, spoolAmount=0),
|
||||
lambda: fit.getTotalVolley(spoolType=SpoolType.SCALE, spoolAmount=1),
|
||||
lambda: fit.getTotalVolley().total,
|
||||
lambda: fit.getTotalVolley(spoolType=SpoolType.SCALE, spoolAmount=0).total,
|
||||
lambda: fit.getTotalVolley(spoolType=SpoolType.SCALE, spoolAmount=1).total,
|
||||
3, 0, 0, "%s", "volley"),
|
||||
(
|
||||
"labelFullDpsTotal",
|
||||
lambda: fit.getTotalDps(),
|
||||
lambda: fit.getTotalDps(spoolType=SpoolType.SCALE, spoolAmount=0),
|
||||
lambda: fit.getTotalDps(spoolType=SpoolType.SCALE, spoolAmount=1),
|
||||
lambda: fit.getTotalDps().total,
|
||||
lambda: fit.getTotalDps(spoolType=SpoolType.SCALE, spoolAmount=0).total,
|
||||
lambda: fit.getTotalDps(spoolType=SpoolType.SCALE, spoolAmount=1).total,
|
||||
3, 0, 0, "%s", "DPS"))
|
||||
|
||||
counter = 0
|
||||
|
||||
@@ -623,11 +623,11 @@ class EfsPort():
|
||||
shipSize = EfsPort.getShipSize(fit.ship.item.groupID)
|
||||
try:
|
||||
dataDict = {
|
||||
"name": fitName, "ehp": fit.ehp, "droneDPS": fit.getDroneDps(),
|
||||
"name": fitName, "ehp": fit.ehp, "droneDPS": fit.getDroneDps().total,
|
||||
"droneVolley": fit.getDroneVolley(), "hp": fit.hp, "maxTargets": fit.maxTargets,
|
||||
"maxSpeed": fit.maxSpeed, "weaponVolley": fit.getWeaponVolley(), "totalVolley": fit.getTotalVolley(),
|
||||
"maxSpeed": fit.maxSpeed, "weaponVolley": fit.getWeaponVolley().total, "totalVolley": fit.getTotalVolley().total,
|
||||
"maxTargetRange": fit.maxTargetRange, "scanStrength": fit.scanStrength,
|
||||
"weaponDPS": fit.getWeaponDps(), "alignTime": fit.alignTime, "signatureRadius": fitModAttr("signatureRadius"),
|
||||
"weaponDPS": fit.getWeaponDps().total, "alignTime": fit.alignTime, "signatureRadius": fitModAttr("signatureRadius"),
|
||||
"weapons": weaponSystems, "scanRes": fitModAttr("scanResolution"),
|
||||
"capUsed": fit.capUsed, "capRecharge": fit.capRecharge,
|
||||
"rigSlots": fitModAttr("rigSlots"), "lowSlots": fitModAttr("lowSlots"),
|
||||
|
||||
Reference in New Issue
Block a user