Convert miscparams to dict in generic methods to avoid extra conversions in every getter implementation
This commit is contained in:
@@ -185,15 +185,14 @@ class FitGraph(metaclass=ABCMeta):
|
||||
mainParamRange = (mainInput.handle, tuple(normalizer(v, src, tgt) for v in mainInput.value))
|
||||
else:
|
||||
mainParamRange = (mainInput.handle, mainInput.value)
|
||||
miscParams = []
|
||||
miscParams = {}
|
||||
for miscInput in miscInputs:
|
||||
key = (miscInput.handle, miscInput.unit)
|
||||
if key in self._normalizers:
|
||||
normalizer = self._normalizers[key]
|
||||
miscParam = (miscInput.handle, normalizer(miscInput.value, src, tgt))
|
||||
miscParams[miscInput.handle] = normalizer(miscInput.value, src, tgt)
|
||||
else:
|
||||
miscParam = (miscInput.handle, miscInput.value)
|
||||
miscParams.append(miscParam)
|
||||
miscParams[miscInput.handle] = miscInput.value
|
||||
return mainParamRange, miscParams
|
||||
|
||||
_limiters = {}
|
||||
@@ -210,19 +209,13 @@ class FitGraph(metaclass=ABCMeta):
|
||||
mainHandle, mainValue = mainParamRange
|
||||
if mainHandle in self._limiters:
|
||||
limiter = self._limiters[mainHandle]
|
||||
newMainParamRange = (mainHandle, tuple(limitToRange(v, limiter(src, tgt)) for v in mainValue))
|
||||
else:
|
||||
newMainParamRange = mainParamRange
|
||||
newMiscParams = []
|
||||
for miscParam in miscParams:
|
||||
miscHandle, miscValue = miscParam
|
||||
mainParamRange = (mainHandle, tuple(limitToRange(v, limiter(src, tgt)) for v in mainValue))
|
||||
for miscHandle in miscParams:
|
||||
if miscHandle in self._limiters:
|
||||
limiter = self._limiters[miscHandle]
|
||||
newMiscParam = (miscHandle, limitToRange(miscValue, limiter(src, tgt)))
|
||||
newMiscParams.append(newMiscParam)
|
||||
else:
|
||||
newMiscParams.append(miscParam)
|
||||
return newMainParamRange, newMiscParams
|
||||
miscValue = miscParams[miscHandle]
|
||||
miscParams[miscHandle] = limitToRange(miscValue, limiter(src, tgt))
|
||||
return mainParamRange, miscParams
|
||||
|
||||
_getters = {}
|
||||
|
||||
|
||||
@@ -135,21 +135,17 @@ class XDistanceMixin(SmoothPointGetter):
|
||||
_extraDepth = 2
|
||||
|
||||
def _getCommonData(self, miscParams, src, tgt):
|
||||
# Process params into more convenient form
|
||||
miscParamMap = dict(miscParams)
|
||||
# Prepare time cache here because we need to do it only once,
|
||||
# and this function is called once per point info fetch
|
||||
self._prepareTimeCache(src=src, maxTime=miscParamMap['time'])
|
||||
self._prepareTimeCache(src=src, maxTime=miscParams['time'])
|
||||
return {
|
||||
'applyProjected': GraphSettings.getInstance().get('applyProjected'),
|
||||
'miscParamMap': miscParamMap,
|
||||
'dmgMap': self._getDamagePerKey(src=src, time=miscParamMap['time']),
|
||||
'dmgMap': self._getDamagePerKey(src=src, time=miscParams['time']),
|
||||
'tgtResists': tgt.getResists()}
|
||||
|
||||
def _calculatePoint(self, x, miscParams, src, tgt, commonData):
|
||||
distance = x
|
||||
miscParamMap = commonData['miscParamMap']
|
||||
tgtSpeed = miscParamMap['tgtSpeed']
|
||||
tgtSpeed = miscParams['tgtSpeed']
|
||||
tgtSigRadius = tgt.getSigRadius()
|
||||
if commonData['applyProjected']:
|
||||
webMods, tpMods = self.graph._projectedCache.getProjModData(src)
|
||||
@@ -174,11 +170,11 @@ class XDistanceMixin(SmoothPointGetter):
|
||||
applicationMap = getApplicationPerKey(
|
||||
src=src,
|
||||
tgt=tgt,
|
||||
atkSpeed=miscParamMap['atkSpeed'],
|
||||
atkAngle=miscParamMap['atkAngle'],
|
||||
atkSpeed=miscParams['atkSpeed'],
|
||||
atkAngle=miscParams['atkAngle'],
|
||||
distance=distance,
|
||||
tgtSpeed=tgtSpeed,
|
||||
tgtAngle=miscParamMap['tgtAngle'],
|
||||
tgtAngle=miscParams['tgtAngle'],
|
||||
tgtSigRadius=tgtSigRadius)
|
||||
y = applyDamage(
|
||||
dmgMap=commonData['dmgMap'],
|
||||
@@ -190,9 +186,7 @@ class XDistanceMixin(SmoothPointGetter):
|
||||
class XTimeMixin(PointGetter):
|
||||
|
||||
def _prepareApplicationMap(self, miscParams, src, tgt):
|
||||
# Process params into more convenient form
|
||||
miscParamMap = dict(miscParams)
|
||||
tgtSpeed = miscParamMap['tgtSpeed']
|
||||
tgtSpeed = miscParams['tgtSpeed']
|
||||
tgtSigRadius = tgt.getSigRadius()
|
||||
if GraphSettings.getInstance().get('applyProjected'):
|
||||
webMods, tpMods = self.graph._projectedCache.getProjModData(src)
|
||||
@@ -205,7 +199,7 @@ class XTimeMixin(PointGetter):
|
||||
webMods=webMods,
|
||||
webDrones=webDrones,
|
||||
webFighters=webFighters,
|
||||
distance=miscParamMap['distance'])
|
||||
distance=miscParams['distance'])
|
||||
tgtSigRadius = tgtSigRadius * getTpMult(
|
||||
src=src,
|
||||
tgt=tgt,
|
||||
@@ -213,16 +207,16 @@ class XTimeMixin(PointGetter):
|
||||
tpMods=tpMods,
|
||||
tpDrones=tpDrones,
|
||||
tpFighters=tpFighters,
|
||||
distance=miscParamMap['distance'])
|
||||
distance=miscParams['distance'])
|
||||
# Get all data we need for all times into maps/caches
|
||||
applicationMap = getApplicationPerKey(
|
||||
src=src,
|
||||
tgt=tgt,
|
||||
atkSpeed=miscParamMap['atkSpeed'],
|
||||
atkAngle=miscParamMap['atkAngle'],
|
||||
distance=miscParamMap['distance'],
|
||||
atkSpeed=miscParams['atkSpeed'],
|
||||
atkAngle=miscParams['atkAngle'],
|
||||
distance=miscParams['distance'],
|
||||
tgtSpeed=tgtSpeed,
|
||||
tgtAngle=miscParamMap['tgtAngle'],
|
||||
tgtAngle=miscParams['tgtAngle'],
|
||||
tgtSigRadius=tgtSigRadius)
|
||||
return applicationMap
|
||||
|
||||
@@ -297,20 +291,16 @@ class XTgtSpeedMixin(SmoothPointGetter):
|
||||
_extraDepth = 2
|
||||
|
||||
def _getCommonData(self, miscParams, src, tgt):
|
||||
# Process params into more convenient form
|
||||
miscParamMap = dict(miscParams)
|
||||
# Prepare time cache here because we need to do it only once,
|
||||
# and this function is called once per point info fetch
|
||||
self._prepareTimeCache(src=src, maxTime=miscParamMap['time'])
|
||||
self._prepareTimeCache(src=src, maxTime=miscParams['time'])
|
||||
return {
|
||||
'applyProjected': GraphSettings.getInstance().get('applyProjected'),
|
||||
'miscParamMap': miscParamMap,
|
||||
'dmgMap': self._getDamagePerKey(src=src, time=miscParamMap['time']),
|
||||
'dmgMap': self._getDamagePerKey(src=src, time=miscParams['time']),
|
||||
'tgtResists': tgt.getResists()}
|
||||
|
||||
def _calculatePoint(self, x, miscParams, src, tgt, commonData):
|
||||
tgtSpeed = x
|
||||
miscParamMap = commonData['miscParamMap']
|
||||
tgtSigRadius = tgt.getSigRadius()
|
||||
if commonData['applyProjected']:
|
||||
webMods, tpMods = self.graph._projectedCache.getProjModData(src)
|
||||
@@ -323,7 +313,7 @@ class XTgtSpeedMixin(SmoothPointGetter):
|
||||
webMods=webMods,
|
||||
webDrones=webDrones,
|
||||
webFighters=webFighters,
|
||||
distance=miscParamMap['distance'])
|
||||
distance=miscParams['distance'])
|
||||
tgtSigRadius = tgtSigRadius * getTpMult(
|
||||
src=src,
|
||||
tgt=tgt,
|
||||
@@ -331,15 +321,15 @@ class XTgtSpeedMixin(SmoothPointGetter):
|
||||
tpMods=tpMods,
|
||||
tpDrones=tpDrones,
|
||||
tpFighters=tpFighters,
|
||||
distance=miscParamMap['distance'])
|
||||
distance=miscParams['distance'])
|
||||
applicationMap = getApplicationPerKey(
|
||||
src=src,
|
||||
tgt=tgt,
|
||||
atkSpeed=miscParamMap['atkSpeed'],
|
||||
atkAngle=miscParamMap['atkAngle'],
|
||||
distance=miscParamMap['distance'],
|
||||
atkSpeed=miscParams['atkSpeed'],
|
||||
atkAngle=miscParams['atkAngle'],
|
||||
distance=miscParams['distance'],
|
||||
tgtSpeed=tgtSpeed,
|
||||
tgtAngle=miscParamMap['tgtAngle'],
|
||||
tgtAngle=miscParams['tgtAngle'],
|
||||
tgtSigRadius=tgtSigRadius)
|
||||
y = applyDamage(
|
||||
dmgMap=commonData['dmgMap'],
|
||||
@@ -354,9 +344,7 @@ class XTgtSigRadiusMixin(SmoothPointGetter):
|
||||
_extraDepth = 2
|
||||
|
||||
def _getCommonData(self, miscParams, src, tgt):
|
||||
# Process params into more convenient form
|
||||
miscParamMap = dict(miscParams)
|
||||
tgtSpeed = miscParamMap['tgtSpeed']
|
||||
tgtSpeed = miscParams['tgtSpeed']
|
||||
tgtSigMult = 1
|
||||
if GraphSettings.getInstance().get('applyProjected'):
|
||||
webMods, tpMods = self.graph._projectedCache.getProjModData(src)
|
||||
@@ -369,7 +357,7 @@ class XTgtSigRadiusMixin(SmoothPointGetter):
|
||||
webMods=webMods,
|
||||
webDrones=webDrones,
|
||||
webFighters=webFighters,
|
||||
distance=miscParamMap['distance'])
|
||||
distance=miscParams['distance'])
|
||||
tgtSigMult = getTpMult(
|
||||
src=src,
|
||||
tgt=tgt,
|
||||
@@ -377,28 +365,26 @@ class XTgtSigRadiusMixin(SmoothPointGetter):
|
||||
tpMods=tpMods,
|
||||
tpDrones=tpDrones,
|
||||
tpFighters=tpFighters,
|
||||
distance=miscParamMap['distance'])
|
||||
distance=miscParams['distance'])
|
||||
# Prepare time cache here because we need to do it only once,
|
||||
# and this function is called once per point info fetch
|
||||
self._prepareTimeCache(src=src, maxTime=miscParamMap['time'])
|
||||
self._prepareTimeCache(src=src, maxTime=miscParams['time'])
|
||||
return {
|
||||
'miscParamMap': miscParamMap,
|
||||
'tgtSpeed': tgtSpeed,
|
||||
'tgtSigMult': tgtSigMult,
|
||||
'dmgMap': self._getDamagePerKey(src=src, time=miscParamMap['time']),
|
||||
'dmgMap': self._getDamagePerKey(src=src, time=miscParams['time']),
|
||||
'tgtResists': tgt.getResists()}
|
||||
|
||||
def _calculatePoint(self, x, miscParams, src, tgt, commonData):
|
||||
tgtSigRadius = x
|
||||
miscParamMap = commonData['miscParamMap']
|
||||
applicationMap = getApplicationPerKey(
|
||||
src=src,
|
||||
tgt=tgt,
|
||||
atkSpeed=miscParamMap['atkSpeed'],
|
||||
atkAngle=miscParamMap['atkAngle'],
|
||||
distance=miscParamMap['distance'],
|
||||
atkSpeed=miscParams['atkSpeed'],
|
||||
atkAngle=miscParams['atkAngle'],
|
||||
distance=miscParams['distance'],
|
||||
tgtSpeed=commonData['tgtSpeed'],
|
||||
tgtAngle=miscParamMap['tgtAngle'],
|
||||
tgtAngle=miscParams['tgtAngle'],
|
||||
tgtSigRadius=tgtSigRadius * commonData['tgtSigMult'])
|
||||
y = applyDamage(
|
||||
dmgMap=commonData['dmgMap'],
|
||||
|
||||
@@ -31,7 +31,7 @@ class Distance2WebbingStrengthGetter(SmoothPointGetter):
|
||||
_extraDepth = 2
|
||||
|
||||
def _getCommonData(self, miscParams, src, tgt):
|
||||
resist = dict(miscParams)['resist'] or 0
|
||||
resist = miscParams['resist'] or 0
|
||||
webs = []
|
||||
for mod in src.item.modules:
|
||||
if mod.state <= FittingModuleState.ONLINE:
|
||||
|
||||
Reference in New Issue
Block a user