Rework how toggling factor reload works
This commit is contained in:
@@ -137,9 +137,15 @@ class Fit(object):
|
||||
self.ecmProjectedStr = 1
|
||||
self.commandBonuses = {}
|
||||
|
||||
@property
|
||||
def hasDpsData(self):
|
||||
return len(self.__weaponDpsMap) > 0
|
||||
def clearFactorReloadDependentData(self):
|
||||
# Here we clear all data known to rely on cycle parameters
|
||||
# (which, in turn, relies on factor reload flag)
|
||||
self.__weaponDpsMap.clear()
|
||||
self.__remoteRepMap.clear()
|
||||
self.__capStable = None
|
||||
self.__capState = None
|
||||
self.__capUsed = None
|
||||
self.__capRecharge = None
|
||||
|
||||
@property
|
||||
def targetResists(self):
|
||||
|
||||
@@ -507,13 +507,6 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
||||
rrAmount = module.getModifiedItemAttr("powerTransferAmount", 0)
|
||||
else:
|
||||
return None, 0
|
||||
if rrAmount:
|
||||
cycleParams = self.getCycleParameters()
|
||||
if cycleParams is None:
|
||||
return None, 0
|
||||
rrAmount *= 1 / (cycleParams.averageTime / 1000)
|
||||
if module.item.group.name == "Ancillary Remote Armor Repairer" and module.charge:
|
||||
rrAmount *= module.getModifiedItemAttr("chargedArmorDamageMultiplier", 1)
|
||||
|
||||
return rrType, rrAmount
|
||||
|
||||
@@ -522,6 +515,14 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
||||
|
||||
rrType, rrAmount = self.__baseRemoteReps
|
||||
|
||||
if rrAmount:
|
||||
cycleParams = self.getCycleParameters()
|
||||
if cycleParams is None:
|
||||
return None, 0
|
||||
rrAmount *= 1 / (cycleParams.averageTime / 1000)
|
||||
if self.item.group.name == "Ancillary Remote Armor Repairer" and self.charge:
|
||||
rrAmount *= self.getModifiedItemAttr("chargedArmorDamageMultiplier", 1)
|
||||
|
||||
if rrType and rrAmount and self.item.group.name == "Mutadaptive Remote Armor Repairer":
|
||||
spoolType, spoolAmount = resolveSpoolOptions(spoolOptions, self)
|
||||
spoolBoost = calculateSpoolup(
|
||||
|
||||
@@ -99,6 +99,11 @@ class BoosterView(d.Display):
|
||||
event.Skip()
|
||||
|
||||
def fitChanged(self, event):
|
||||
event.Skip()
|
||||
activeFitID = self.mainFrame.getActiveFit()
|
||||
if activeFitID is not None and event.fitID is not None and event.fitID != activeFitID:
|
||||
return
|
||||
|
||||
sFit = Fit.getInstance()
|
||||
fit = sFit.getFit(event.fitID)
|
||||
|
||||
@@ -108,7 +113,6 @@ class BoosterView(d.Display):
|
||||
if event.fitID is None and self.lastFitId is not None:
|
||||
self.DeleteAllItems()
|
||||
self.lastFitId = None
|
||||
event.Skip()
|
||||
return
|
||||
|
||||
self.original = fit.boosters if fit is not None else None
|
||||
@@ -127,7 +131,6 @@ class BoosterView(d.Display):
|
||||
self.unselectAll()
|
||||
|
||||
self.update(self.boosters)
|
||||
event.Skip()
|
||||
|
||||
def addItem(self, event):
|
||||
item = Market.getInstance().getItem(event.itemID, eager='group')
|
||||
|
||||
@@ -135,6 +135,11 @@ class CargoView(d.Display):
|
||||
copy=wx.GetMouseState().GetModifiers() == wx.MOD_CONTROL))
|
||||
|
||||
def fitChanged(self, event):
|
||||
event.Skip()
|
||||
activeFitID = self.mainFrame.getActiveFit()
|
||||
if activeFitID is not None and event.fitID is not None and event.fitID != activeFitID:
|
||||
return
|
||||
|
||||
sFit = Fit.getInstance()
|
||||
fit = sFit.getFit(event.fitID)
|
||||
|
||||
@@ -144,7 +149,6 @@ class CargoView(d.Display):
|
||||
if event.fitID is None and self.lastFitId is not None:
|
||||
self.DeleteAllItems()
|
||||
self.lastFitId = None
|
||||
event.Skip()
|
||||
return
|
||||
|
||||
self.original = fit.cargo if fit is not None else None
|
||||
@@ -164,7 +168,6 @@ class CargoView(d.Display):
|
||||
|
||||
self.populate(self.cargo)
|
||||
self.refresh(self.cargo)
|
||||
event.Skip()
|
||||
|
||||
def onLeftDoubleClick(self, event):
|
||||
row, _ = self.HitTest(event.Position)
|
||||
|
||||
@@ -124,6 +124,11 @@ class CommandView(d.Display):
|
||||
return fit.name
|
||||
|
||||
def fitChanged(self, event):
|
||||
event.Skip()
|
||||
activeFitID = self.mainFrame.getActiveFit()
|
||||
if activeFitID is not None and event.fitID is not None and event.fitID != activeFitID:
|
||||
return
|
||||
|
||||
sFit = Fit.getInstance()
|
||||
fit = sFit.getFit(event.fitID)
|
||||
|
||||
@@ -135,7 +140,6 @@ class CommandView(d.Display):
|
||||
if event.fitID is None and self.lastFitId is not None:
|
||||
self.DeleteAllItems()
|
||||
self.lastFitId = None
|
||||
event.Skip()
|
||||
return
|
||||
|
||||
if event.fitID != self.lastFitId:
|
||||
@@ -150,8 +154,6 @@ class CommandView(d.Display):
|
||||
|
||||
self.refreshContents(fit)
|
||||
|
||||
event.Skip()
|
||||
|
||||
def refreshContents(self, fit):
|
||||
stuff = []
|
||||
if fit is not None:
|
||||
|
||||
@@ -199,6 +199,11 @@ class DroneView(Display):
|
||||
drone.item.name)
|
||||
|
||||
def fitChanged(self, event):
|
||||
event.Skip()
|
||||
activeFitID = self.mainFrame.getActiveFit()
|
||||
if activeFitID is not None and event.fitID is not None and event.fitID != activeFitID:
|
||||
return
|
||||
|
||||
sFit = Fit.getInstance()
|
||||
fit = sFit.getFit(event.fitID)
|
||||
|
||||
@@ -208,7 +213,6 @@ class DroneView(Display):
|
||||
if event.fitID is None and self.lastFitId is not None:
|
||||
self.DeleteAllItems()
|
||||
self.lastFitId = None
|
||||
event.Skip()
|
||||
return
|
||||
|
||||
self.original = fit.drones if fit is not None else None
|
||||
@@ -228,7 +232,6 @@ class DroneView(Display):
|
||||
self.unselectAll()
|
||||
|
||||
self.update(self.drones)
|
||||
event.Skip()
|
||||
|
||||
def addItem(self, event):
|
||||
item = Market.getInstance().getItem(event.itemID, eager='group.category')
|
||||
|
||||
@@ -88,8 +88,12 @@ class FighterView(wx.Panel):
|
||||
self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged)
|
||||
|
||||
def fitChanged(self, event):
|
||||
sFit = Fit.getInstance()
|
||||
event.Skip()
|
||||
activeFitID = self.mainFrame.getActiveFit()
|
||||
if activeFitID is not None and event.fitID is not None and event.fitID != activeFitID:
|
||||
return
|
||||
|
||||
sFit = Fit.getInstance()
|
||||
fit = sFit.getFit(activeFitID)
|
||||
|
||||
if fit:
|
||||
@@ -113,8 +117,6 @@ class FighterView(wx.Panel):
|
||||
|
||||
self.Refresh()
|
||||
|
||||
event.Skip()
|
||||
|
||||
|
||||
class FighterDisplay(d.Display):
|
||||
|
||||
@@ -242,6 +244,11 @@ class FighterDisplay(d.Display):
|
||||
return orderPos, abilityEffectIDs, fighter.item.name
|
||||
|
||||
def fitChanged(self, event):
|
||||
event.Skip()
|
||||
activeFitID = self.mainFrame.getActiveFit()
|
||||
if activeFitID is not None and event.fitID is not None and event.fitID != activeFitID:
|
||||
return
|
||||
|
||||
sFit = Fit.getInstance()
|
||||
fit = sFit.getFit(event.fitID)
|
||||
|
||||
@@ -251,7 +258,6 @@ class FighterDisplay(d.Display):
|
||||
if event.fitID is None and self.lastFitId is not None:
|
||||
self.DeleteAllItems()
|
||||
self.lastFitId = None
|
||||
event.Skip()
|
||||
return
|
||||
|
||||
self.original = fit.fighters if fit is not None else None
|
||||
@@ -271,7 +277,6 @@ class FighterDisplay(d.Display):
|
||||
self.unselectAll()
|
||||
|
||||
self.update(self.fighters)
|
||||
event.Skip()
|
||||
|
||||
def addItem(self, event):
|
||||
item = Market.getInstance().getItem(event.itemID, eager='group.category')
|
||||
|
||||
@@ -78,8 +78,12 @@ class ImplantView(wx.Panel):
|
||||
self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged)
|
||||
|
||||
def fitChanged(self, event):
|
||||
sFit = Fit.getInstance()
|
||||
event.Skip()
|
||||
activeFitID = self.mainFrame.getActiveFit()
|
||||
if activeFitID is not None and event.fitID is not None and event.fitID != activeFitID:
|
||||
return
|
||||
|
||||
sFit = Fit.getInstance()
|
||||
fit = sFit.getFit(activeFitID)
|
||||
if fit:
|
||||
self.source = fit.implantSource
|
||||
@@ -91,8 +95,6 @@ class ImplantView(wx.Panel):
|
||||
self.rbFit.Enable(fit is not None)
|
||||
self.rbChar.Enable(fit is not None)
|
||||
|
||||
event.Skip()
|
||||
|
||||
def OnRadioSelect(self, event):
|
||||
fitID = self.mainFrame.getActiveFit()
|
||||
if fitID is not None:
|
||||
@@ -152,6 +154,11 @@ class ImplantDisplay(d.Display):
|
||||
event.Skip()
|
||||
|
||||
def fitChanged(self, event):
|
||||
event.Skip()
|
||||
activeFitID = self.mainFrame.getActiveFit()
|
||||
if activeFitID is not None and event.fitID is not None and event.fitID != activeFitID:
|
||||
return
|
||||
|
||||
sFit = Fit.getInstance()
|
||||
fit = sFit.getFit(event.fitID)
|
||||
|
||||
@@ -161,7 +168,6 @@ class ImplantDisplay(d.Display):
|
||||
if event.fitID is None and self.lastFitId is not None:
|
||||
self.DeleteAllItems()
|
||||
self.lastFitId = None
|
||||
event.Skip()
|
||||
return
|
||||
|
||||
self.original = fit.appliedImplants if fit is not None else None
|
||||
@@ -180,7 +186,6 @@ class ImplantDisplay(d.Display):
|
||||
self.unselectAll()
|
||||
|
||||
self.update(self.implants)
|
||||
event.Skip()
|
||||
|
||||
def addItem(self, event):
|
||||
item = Market.getInstance().getItem(event.itemID, eager='group.category')
|
||||
|
||||
@@ -30,6 +30,11 @@ class NotesView(wx.Panel):
|
||||
event.Skip()
|
||||
|
||||
def fitChanged(self, event):
|
||||
event.Skip()
|
||||
activeFitID = self.mainFrame.getActiveFit()
|
||||
if activeFitID is not None and event.fitID is not None and event.fitID != activeFitID:
|
||||
return
|
||||
|
||||
sFit = Fit.getInstance()
|
||||
fit = sFit.getFit(event.fitID)
|
||||
|
||||
@@ -43,14 +48,11 @@ class NotesView(wx.Panel):
|
||||
|
||||
if event.fitID is None and self.lastFitId is not None:
|
||||
self.lastFitId = None
|
||||
event.Skip()
|
||||
return
|
||||
elif event.fitID != self.lastFitId:
|
||||
self.lastFitId = event.fitID
|
||||
self.editNotes.SetValue(fit.notes or "")
|
||||
|
||||
event.Skip()
|
||||
|
||||
def onText(self, event):
|
||||
# delay the save so we're not writing to sqlite on every keystroke
|
||||
self.saveTimer.Stop() # cancel the existing timer
|
||||
|
||||
@@ -168,6 +168,11 @@ class ProjectedView(d.Display):
|
||||
return fit.name
|
||||
|
||||
def fitChanged(self, event):
|
||||
event.Skip()
|
||||
activeFitID = self.mainFrame.getActiveFit()
|
||||
if activeFitID is not None and event.fitID is not None and event.fitID != activeFitID:
|
||||
return
|
||||
|
||||
sFit = Fit.getInstance()
|
||||
fit = sFit.getFit(event.fitID)
|
||||
# pyfalog.debug('ProjectedView::fitChanged: {}', repr(fit))
|
||||
@@ -178,7 +183,6 @@ class ProjectedView(d.Display):
|
||||
if event.fitID is None and self.lastFitId is not None:
|
||||
self.DeleteAllItems()
|
||||
self.lastFitId = None
|
||||
event.Skip()
|
||||
return
|
||||
|
||||
|
||||
@@ -195,8 +199,6 @@ class ProjectedView(d.Display):
|
||||
|
||||
self.refreshContents(fit)
|
||||
|
||||
event.Skip()
|
||||
|
||||
def refreshContents(self, fit):
|
||||
stuff = []
|
||||
if fit is not None:
|
||||
|
||||
@@ -604,8 +604,11 @@ class FittingView(d.Display):
|
||||
self.populate(self.mods)
|
||||
|
||||
def fitChanged(self, event):
|
||||
event.Skip()
|
||||
if not self:
|
||||
event.Skip()
|
||||
return
|
||||
activeFitID = self.mainFrame.getActiveFit()
|
||||
if activeFitID is not None and event.fitID is not None and event.fitID != activeFitID:
|
||||
return
|
||||
try:
|
||||
if self.activeFitID is not None and self.activeFitID == event.fitID:
|
||||
@@ -619,8 +622,6 @@ class FittingView(d.Display):
|
||||
self.Show(self.activeFitID is not None and self.activeFitID == event.fitID)
|
||||
except RuntimeError:
|
||||
pyfalog.error("Caught dead object")
|
||||
finally:
|
||||
event.Skip()
|
||||
|
||||
def spawnMenu(self, event):
|
||||
if self.activeFitID is None or self.getColumn(self.screenToClientFixed(event.Position)) == self.getColIndex(State):
|
||||
|
||||
@@ -214,6 +214,10 @@ class CharacterSelection(wx.Panel):
|
||||
"""
|
||||
When fit is changed, or new fit is selected
|
||||
"""
|
||||
event.Skip()
|
||||
activeFitID = self.mainFrame.getActiveFit()
|
||||
if activeFitID is not None and event.fitID is not None and event.fitID != activeFitID:
|
||||
return
|
||||
self.charChoice.Enable(event.fitID is not None)
|
||||
choice = self.charChoice
|
||||
sFit = Fit.getInstance()
|
||||
@@ -257,8 +261,6 @@ class CharacterSelection(wx.Panel):
|
||||
|
||||
self.toggleRefreshButton()
|
||||
|
||||
event.Skip()
|
||||
|
||||
def exportSkills(self, evt):
|
||||
skillsMap = self._buildSkillsTooltipCondensed(self.reqs, skillsMap={})
|
||||
|
||||
|
||||
@@ -176,6 +176,10 @@ class MainMenuBar(wx.MenuBar):
|
||||
self.mainFrame.Bind(EVT_FIT_RENAMED, self.fitRenamed)
|
||||
|
||||
def fitChanged(self, event):
|
||||
event.Skip()
|
||||
activeFitID = self.mainFrame.getActiveFit()
|
||||
if activeFitID is not None and event.fitID is not None and event.fitID != activeFitID:
|
||||
return
|
||||
enable = event.fitID is not None
|
||||
self.Enable(wx.ID_SAVEAS, enable)
|
||||
self.Enable(wx.ID_COPY, enable)
|
||||
@@ -203,8 +207,6 @@ class MainMenuBar(wx.MenuBar):
|
||||
else:
|
||||
self.ignoreRestrictionItem.SetItemLabel("Disable Fitting Re&strictions")
|
||||
|
||||
event.Skip()
|
||||
|
||||
def fitRenamed(self, event):
|
||||
self.refreshUndo()
|
||||
event.Skip()
|
||||
|
||||
@@ -97,11 +97,14 @@ class ShipBrowser(wx.Panel):
|
||||
self.navpanel.gotoStage(stage, stageData)
|
||||
|
||||
def RefreshList(self, event):
|
||||
stage = self.GetActiveStage()
|
||||
event.Skip()
|
||||
activeFitID = self.mainFrame.getActiveFit()
|
||||
if activeFitID is not None and event.fitID is not None and event.fitID != activeFitID:
|
||||
return
|
||||
|
||||
stage = self.GetActiveStage()
|
||||
if stage in (3, 4, 5):
|
||||
self.lpane.RefreshList(True)
|
||||
event.Skip()
|
||||
|
||||
def SizeRefreshList(self, event):
|
||||
self.Layout()
|
||||
|
||||
@@ -69,11 +69,14 @@ class StatsPane(wx.Panel):
|
||||
pyfalog.error("Unknown setting for view: {0}", aView)
|
||||
|
||||
def fitChanged(self, event):
|
||||
event.Skip()
|
||||
activeFitID = self.mainFrame.getActiveFit()
|
||||
if activeFitID is not None and event.fitID is not None and event.fitID != activeFitID:
|
||||
return
|
||||
sFit = Fit.getInstance()
|
||||
fit = sFit.getFit(event.fitID)
|
||||
for view in self.views:
|
||||
view.refreshPanel(fit)
|
||||
event.Skip()
|
||||
|
||||
def __init__(self, parent):
|
||||
wx.Panel.__init__(self, parent)
|
||||
|
||||
@@ -249,8 +249,9 @@ class Fit:
|
||||
for fit in set(self._loadedFits):
|
||||
if fit is None:
|
||||
continue
|
||||
if fit.hasDpsData:
|
||||
self.recalc(fit)
|
||||
if fit.calculated:
|
||||
fit.factorReload = self.serviceFittingOptions['useGlobalForceReload']
|
||||
fit.clearFactorReloadDependentData()
|
||||
fitIDs.add(fit.ID)
|
||||
return fitIDs
|
||||
|
||||
@@ -477,7 +478,6 @@ class Fit:
|
||||
|
||||
fit.factorReload = self.serviceFittingOptions["useGlobalForceReload"]
|
||||
fit.clear()
|
||||
|
||||
fit.calculateModifiedAttributes()
|
||||
pyfalog.info("=" * 10 + "recalc time: " + str(time() - start_time) + "=" * 10)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user