Plug webs/TPs into calculation process
This commit is contained in:
@@ -178,24 +178,24 @@ def applyWebs(tgt, currentUnwebbedSpeed, webMods, distance):
|
||||
except ZeroDivisionError:
|
||||
currentWebbedSpeed = 0
|
||||
else:
|
||||
appliedBoosts = []
|
||||
for boost, optimal, falloff in webMods:
|
||||
appliedMultipliers = {}
|
||||
for boost, optimal, falloff, stackingChain in webMods:
|
||||
appliedBoost = boost * _calcRangeFactor(atkOptimalRange=optimal, atkFalloffRange=falloff, distance=distance)
|
||||
if appliedBoost:
|
||||
appliedBoosts.append(appliedBoost)
|
||||
webbedSpeed = tgt.ship.getModifiedItemAttrWithExtraMods('maxVelocity', boosts=appliedBoosts)
|
||||
appliedMultipliers.setdefault(stackingChain, []).append(1 + appliedBoost / 100)
|
||||
webbedSpeed = tgt.ship.getModifiedItemAttrWithExtraMods('maxVelocity', extraMultipliers=appliedMultipliers)
|
||||
currentWebbedSpeed = webbedSpeed * speedRatio
|
||||
return currentWebbedSpeed
|
||||
|
||||
|
||||
def applyTps(tgt, tpMods, distance):
|
||||
untpedSig = tgt.ship.getModifiedItemAttr('signatureRadius')
|
||||
appliedBoosts = []
|
||||
for boost, optimal, falloff in tpMods:
|
||||
appliedMultipliers = {}
|
||||
for boost, optimal, falloff, stackingChain in tpMods:
|
||||
appliedBoost = boost * _calcRangeFactor(atkOptimalRange=optimal, atkFalloffRange=falloff, distance=distance)
|
||||
if appliedBoost:
|
||||
appliedBoosts.append(appliedBoost)
|
||||
tpedSig = tgt.ship.getModifiedItemAttrWithExtraMods('signatureRadius', boosts=appliedBoosts)
|
||||
appliedMultipliers.setdefault(stackingChain, []).append(1 + appliedBoost / 100)
|
||||
tpedSig = tgt.ship.getModifiedItemAttrWithExtraMods('signatureRadius', extraMultipliers=appliedMultipliers)
|
||||
mult = tpedSig / untpedSig
|
||||
return mult
|
||||
|
||||
|
||||
@@ -27,13 +27,13 @@ class ProjectedDataCache(FitDataCache):
|
||||
try:
|
||||
projectedData = self._data[fit.ID]['modules']
|
||||
except KeyError:
|
||||
# Format of items for both: (boost strength, optimal, falloff)
|
||||
# Format of items for both: (boost strength, optimal, falloff, stacking group)
|
||||
webMods = []
|
||||
tpMods = []
|
||||
projectedData = self._data.setdefault(fit.ID, {})['modules'] = (webMods, tpMods)
|
||||
for mod in fit.modules:
|
||||
if 'remoteWebifierFalloff' in mod.item.effects or 'structureModuleEffectStasisWebifier' in mod.item.effects:
|
||||
webMods.append((mod.getModifiedItemAttr('speedFactor'), mod.maxRange or 0, mod.falloff or 0))
|
||||
webMods.append((mod.getModifiedItemAttr('speedFactor'), mod.maxRange or 0, mod.falloff or 0, 'default'))
|
||||
if 'remoteTargetPaintFalloff' in mod.item.effects or 'structureModuleEffectTargetPainter' in mod.item.effects:
|
||||
tpMods.append((mod.getModifiedItemAttr('signatureRadiusBonus'), mod.maxRange or 0, mod.falloff or 0))
|
||||
tpMods.append((mod.getModifiedItemAttr('signatureRadiusBonus'), mod.maxRange or 0, mod.falloff or 0, 'default'))
|
||||
return projectedData
|
||||
|
||||
@@ -24,6 +24,7 @@ import wx
|
||||
import gui.display
|
||||
import gui.globalEvents as GE
|
||||
from gui.builtinShipBrowser.events import EVT_FIT_RENAMED
|
||||
from service.const import GraphCacheCleanupReason
|
||||
from service.fit import Fit
|
||||
|
||||
|
||||
@@ -135,7 +136,7 @@ class BaseList(gui.display.Display):
|
||||
self.fits.remove(fit)
|
||||
self.update(self.fits)
|
||||
for fit in fits:
|
||||
self.graphFrame.clearCache(fitID=fit.ID)
|
||||
self.graphFrame.clearCache(reason=GraphCacheCleanupReason.fitChanged, extraData=fit.ID)
|
||||
self.graphFrame.draw()
|
||||
|
||||
def unbindExternalEvents(self):
|
||||
|
||||
Reference in New Issue
Block a user