From b4360d44f1719a6cbf8110057859a3e3f249d5ed Mon Sep 17 00:00:00 2001 From: Ebag333 Date: Wed, 19 Oct 2016 11:38:43 -0700 Subject: [PATCH] Reformatting eos.graph --- eos/graph/__init__.py | 14 +++++++------ eos/graph/fitDps.py | 49 +++++++++++++++++++++++++------------------ 2 files changed, 37 insertions(+), 26 deletions(-) diff --git a/eos/graph/__init__.py b/eos/graph/__init__.py index d4f2d2b3b..882ac35d1 100644 --- a/eos/graph/__init__.py +++ b/eos/graph/__init__.py @@ -1,4 +1,4 @@ -#=============================================================================== +# =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. @@ -15,12 +15,13 @@ # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . -#=============================================================================== +# =============================================================================== import itertools + class Graph(object): - def __init__(self, fit, function, data = None): + def __init__(self, fit, function, data=None): self.fit = fit self.data = {} if data is not None: @@ -39,8 +40,8 @@ class Graph(object): pointNames = [] pointIterators = [] for data in self.data.itervalues(): - pointNames.append(data.name) - pointIterators.append(data) + pointNames.append(data.name) + pointIterators.append(data) return self._iterator(pointNames, pointIterators) @@ -66,7 +67,7 @@ class Data(object): dataList = [] for data in dataString.split(";"): if isinstance(data, basestring) and "-" in data: - #Dealing with a range + # Dealing with a range dataList.append(Range(data, self.step)) else: dataList.append(Constant(data)) @@ -95,6 +96,7 @@ class Constant(object): def isConstant(self): return True + class Range(object): def __init__(self, string, step): start, end = string.split("-") diff --git a/eos/graph/fitDps.py b/eos/graph/fitDps.py index 7bdc68ca0..cfc9ec5f4 100644 --- a/eos/graph/fitDps.py +++ b/eos/graph/fitDps.py @@ -1,4 +1,4 @@ -#=============================================================================== +# =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. @@ -15,12 +15,14 @@ # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . -#=============================================================================== +# =============================================================================== -from eos.graph import Graph, Data -from eos.types import Hardpoint, State from math import log, sin, radians, exp +from eos.graph import Graph +from eos.types import Hardpoint, State + + class FitDpsGraph(Graph): defaults = {"angle": 0, "distance": 0, @@ -32,7 +34,7 @@ class FitDpsGraph(Graph): self.fit = fit def calcDps(self, data): - ew = {'signatureRadius':[],'velocity':[]} + ew = {'signatureRadius': [], 'velocity': []} fit = self.fit total = 0 distance = data["distance"] * 1000 @@ -41,13 +43,17 @@ class FitDpsGraph(Graph): for mod in fit.modules: if not mod.isEmpty and mod.state >= State.ACTIVE: if "remoteTargetPaintFalloff" in mod.item.effects: - ew['signatureRadius'].append(1+(mod.getModifiedItemAttr("signatureRadiusBonus") / 100) * self.calculateModuleMultiplier(mod, data)) + ew['signatureRadius'].append( + 1 + (mod.getModifiedItemAttr("signatureRadiusBonus") / 100) * self.calculateModuleMultiplier( + mod, data)) if "remoteWebifierFalloff" in mod.item.effects: if distance <= mod.getModifiedItemAttr("maxRange"): - ew['velocity'].append(1+(mod.getModifiedItemAttr("speedFactor") / 100)) + ew['velocity'].append(1 + (mod.getModifiedItemAttr("speedFactor") / 100)) elif mod.getModifiedItemAttr("falloffEffectiveness") > 0: - #I am affected by falloff - ew['velocity'].append(1+(mod.getModifiedItemAttr("speedFactor") / 100) * self.calculateModuleMultiplier(mod, data)) + # I am affected by falloff + ew['velocity'].append( + 1 + (mod.getModifiedItemAttr("speedFactor") / 100) * self.calculateModuleMultiplier(mod, + data)) ew['signatureRadius'].sort(key=abssort) ew['velocity'].sort(key=abssort) @@ -63,7 +69,7 @@ class FitDpsGraph(Graph): pass for mod in fit.modules: - dps, _ = mod.damageStats(fit.targetResists) + dps, _ = mod.damageStats(fit.targetResists) if mod.hardpoint == Hardpoint.TURRET: if mod.state >= State.ACTIVE: total += dps * self.calculateTurretMultiplier(mod, data) @@ -74,8 +80,9 @@ class FitDpsGraph(Graph): if distance <= fit.extraAttributes["droneControlRange"]: for drone in fit.drones: - multiplier = 1 if drone.getModifiedItemAttr("maxVelocity") > 1 else self.calculateTurretMultiplier(drone, data) - dps, _ = drone.damageStats(fit.targetResists) + multiplier = 1 if drone.getModifiedItemAttr("maxVelocity") > 1 else self.calculateTurretMultiplier( + drone, data) + dps, _ = drone.damageStats(fit.targetResists) total += dps * multiplier # this is janky as fuck @@ -98,20 +105,21 @@ class FitDpsGraph(Graph): sigRadiusFactor = targetSigRad / explosionRadius if targetVelocity: - velocityFactor = (explosionVelocity / explosionRadius * targetSigRad / targetVelocity) ** damageReductionFactor + velocityFactor = ( + explosionVelocity / explosionRadius * targetSigRad / targetVelocity) ** damageReductionFactor else: velocityFactor = 1 return min(sigRadiusFactor, velocityFactor, 1) def calculateTurretMultiplier(self, mod, data): - #Source for most of turret calculation info: http://wiki.eveonline.com/en/wiki/Falloff + # Source for most of turret calculation info: http://wiki.eveonline.com/en/wiki/Falloff chanceToHit = self.calculateTurretChanceToHit(mod, data) if chanceToHit > 0.01: - #AvgDPS = Base Damage * [ ( ChanceToHit^2 + ChanceToHit + 0.0499 ) / 2 ] + # AvgDPS = Base Damage * [ ( ChanceToHit^2 + ChanceToHit + 0.0499 ) / 2 ] multiplier = (chanceToHit ** 2 + chanceToHit + 0.0499) / 2 else: - #All hits are wreckings + # All hits are wreckings multiplier = chanceToHit * 3 dmgScaling = mod.getModifiedItemAttr("turretDamageScalingRadius") if dmgScaling: @@ -135,14 +143,15 @@ class FitDpsGraph(Graph): damageReductionSensitivity = ability.fighter.getModifiedItemAttr("{}ReductionSensitivity".format(prefix)) if damageReductionSensitivity is None: - damageReductionSensitivity = ability.fighter.getModifiedItemAttr("{}DamageReductionSensitivity".format(prefix)) + damageReductionSensitivity = ability.fighter.getModifiedItemAttr( + "{}DamageReductionSensitivity".format(prefix)) targetSigRad = explosionRadius if targetSigRad is None else targetSigRad sigRadiusFactor = targetSigRad / explosionRadius if targetVelocity: velocityFactor = (explosionVelocity / explosionRadius * targetSigRad / targetVelocity) ** ( - log(damageReductionFactor) / log(damageReductionSensitivity)) + log(damageReductionFactor) / log(damageReductionSensitivity)) else: velocityFactor = 1 @@ -164,8 +173,8 @@ class FitDpsGraph(Graph): return 0.5 ** (trackingEq + rangeEq) def calculateModuleMultiplier(self, mod, data): - #Simplified formula, we make some assumptions about the module - #This is basically the calculateTurretChanceToHit without tracking values + # Simplified formula, we make some assumptions about the module + # This is basically the calculateTurretChanceToHit without tracking values distance = data["distance"] * 1000 turretOptimal = mod.maxRange turretFalloff = mod.falloff