Allow to control spoolup via fit object

This commit is contained in:
DarkPhoenix
2018-12-11 18:21:08 +03:00
parent 30ff2e0dae
commit d4e8ac761e

View File

@@ -120,9 +120,9 @@ class Fit(object):
def build(self): def build(self):
self.__extraDrains = [] self.__extraDrains = []
self.__ehp = None self.__ehp = None
self.__weaponDps = None self.__weaponDpsMap = {}
self.__weaponVolleyMap = {}
self.__minerYield = None self.__minerYield = None
self.__weaponVolley = None
self.__droneDps = None self.__droneDps = None
self.__droneVolley = None self.__droneVolley = None
self.__droneYield = None self.__droneYield = None
@@ -154,8 +154,8 @@ class Fit(object):
@targetResists.setter @targetResists.setter
def targetResists(self, targetResists): def targetResists(self, targetResists):
self.__targetResists = targetResists self.__targetResists = targetResists
self.__weaponDps = None self.__weaponDpsMap = {}
self.__weaponVolley = None self.__weaponVolleyMap = {}
self.__droneDps = None self.__droneDps = None
self.__droneVolley = None self.__droneVolley = None
@@ -277,31 +277,31 @@ class Fit(object):
def projectedFighters(self): def projectedFighters(self):
return self.__projectedFighters return self.__projectedFighters
def getWeaponDps(self): def getWeaponDps(self, spoolType=None, spoolAmount=None):
if self.__weaponDps is None: if (spoolType, spoolAmount) not in self.__weaponDpsMap:
self.calculateWeaponStats() self.calculateWeaponDmgStats(spoolType, spoolAmount)
return self.__weaponDps return self.__weaponDpsMap[(spoolType, spoolAmount)]
def getWeaponVolley(self): def getWeaponVolley(self, spoolType=None, spoolAmount=None):
if self.__weaponVolley is None: if (spoolType, spoolAmount) not in self.__weaponVolleyMap:
self.calculateWeaponStats() self.calculateWeaponDmgStats(spoolType, spoolAmount)
return self.__weaponVolley return self.__weaponVolleyMap[(spoolType, spoolAmount)]
def getDroneDps(self): def getDroneDps(self):
if self.__droneDps is None: if self.__droneDps is None:
self.calculateWeaponStats() self.calculateDroneDmgStats()
return self.__droneDps return self.__droneDps
def getDroneVolley(self): def getDroneVolley(self):
if self.__droneVolley is None: if self.__droneVolley is None:
self.calculateWeaponStats() self.calculateDroneDmgStats()
return self.__droneVolley return self.__droneVolley
def getTotalDps(self): def getTotalDps(self, spoolType=None, spoolAmount=None):
return self.getDroneDps() + self.getWeaponDps() return self.getDroneDps() + self.getWeaponDps(spoolType=spoolType, spoolAmount=spoolAmount)
def getTotalVolley(self): def getTotalVolley(self, spoolType=None, spoolAmount=None):
return self.getDroneVolley() + self.getWeaponVolley() return self.getDroneVolley() + self.getWeaponVolley(spoolType=spoolType, spoolAmount=spoolAmount)
@property @property
def minerYield(self): def minerYield(self):
@@ -399,8 +399,8 @@ class Fit(object):
def clear(self, projected=False, command=False): def clear(self, projected=False, command=False):
self.__effectiveTank = None self.__effectiveTank = None
self.__weaponDps = None self.__weaponDpsMap = {}
self.__weaponVolley = None self.__weaponVolleyMap = {}
self.__minerYield = None self.__minerYield = None
self.__effectiveSustainableTank = None self.__effectiveSustainableTank = None
self.__sustainableTank = None self.__sustainableTank = None
@@ -1528,15 +1528,20 @@ class Fit(object):
self.__minerYield = minerYield self.__minerYield = minerYield
self.__droneYield = droneYield self.__droneYield = droneYield
def calculateWeaponStats(self): def calculateWeaponDmgStats(self, spoolType, spoolAmount):
weaponVolley = 0 weaponVolley = 0
droneVolley = 0
weaponDps = 0 weaponDps = 0
droneDps = 0
for mod in self.modules: for mod in self.modules:
weaponVolley += mod.getVolley(targetResists=self.targetResists).total weaponVolley += mod.getVolley(spoolType=spoolType, spoolAmount=spoolAmount, targetResists=self.targetResists).total
weaponDps += mod.getDps(targetResists=self.targetResists).total weaponDps += mod.getDps(spoolType=spoolType, spoolAmount=spoolAmount, targetResists=self.targetResists).total
self.__weaponVolleyMap[(spoolType, spoolAmount)] = weaponVolley
self.__weaponDpsMap[(spoolType, spoolAmount)] = weaponDps
def calculateDroneDmgStats(self):
droneVolley = 0
droneDps = 0
for drone in self.drones: for drone in self.drones:
droneVolley += drone.getVolley(targetResists=self.targetResists).total droneVolley += drone.getVolley(targetResists=self.targetResists).total
@@ -1546,8 +1551,6 @@ class Fit(object):
droneVolley += fighter.getVolley(targetResists=self.targetResists).total droneVolley += fighter.getVolley(targetResists=self.targetResists).total
droneDps += fighter.getDps(targetResists=self.targetResists).total droneDps += fighter.getDps(targetResists=self.targetResists).total
self.__weaponDps = weaponDps
self.__weaponVolley = weaponVolley
self.__droneDps = droneDps self.__droneDps = droneDps
self.__droneVolley = droneVolley self.__droneVolley = droneVolley