Skip to content

Commit

Permalink
Rework how toggling factor reload works
Browse files Browse the repository at this point in the history
  • Loading branch information
DarkFenX committed Jul 5, 2019
1 parent 63ca8dc commit e6dce72
Show file tree
Hide file tree
Showing 16 changed files with 91 additions and 48 deletions.
12 changes: 9 additions & 3 deletions eos/saveddata/fit.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,9 +137,15 @@ def build(self):
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):
Expand Down
15 changes: 8 additions & 7 deletions eos/saveddata/module.py
Original file line number Diff line number Diff line change
Expand Up @@ -507,13 +507,6 @@ def getBaseRemoteReps(module):
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

Expand All @@ -522,6 +515,14 @@ def getBaseRemoteReps(module):

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(
Expand Down
7 changes: 5 additions & 2 deletions gui/builtinAdditionPanes/boosterView.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,11 @@ def kbEvent(self, event):
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)

Expand All @@ -108,7 +113,6 @@ def fitChanged(self, event):
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
Expand All @@ -127,7 +131,6 @@ def fitChanged(self, event):
self.unselectAll()

self.update(self.boosters)
event.Skip()

def addItem(self, event):
item = Market.getInstance().getItem(event.itemID, eager='group')
Expand Down
7 changes: 5 additions & 2 deletions gui/builtinAdditionPanes/cargoView.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,11 @@ def swapModule(self, x, y, modIdx):
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)

Expand All @@ -144,7 +149,6 @@ def fitChanged(self, event):
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
Expand All @@ -164,7 +168,6 @@ def fitChanged(self, event):

self.populate(self.cargo)
self.refresh(self.cargo)
event.Skip()

def onLeftDoubleClick(self, event):
row, _ = self.HitTest(event.Position)
Expand Down
8 changes: 5 additions & 3 deletions gui/builtinAdditionPanes/commandView.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,11 @@ def fitSort(fit):
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)

Expand All @@ -135,7 +140,6 @@ def fitChanged(self, event):
if event.fitID is None and self.lastFitId is not None:
self.DeleteAllItems()
self.lastFitId = None
event.Skip()
return

if event.fitID != self.lastFitId:
Expand All @@ -150,8 +154,6 @@ def fitChanged(self, event):

self.refreshContents(fit)

event.Skip()

def refreshContents(self, fit):
stuff = []
if fit is not None:
Expand Down
7 changes: 5 additions & 2 deletions gui/builtinAdditionPanes/droneView.py
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,11 @@ def droneKey(self, drone):
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)

Expand All @@ -208,7 +213,6 @@ def fitChanged(self, event):
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
Expand All @@ -228,7 +232,6 @@ def fitChanged(self, event):
self.unselectAll()

self.update(self.drones)
event.Skip()

def addItem(self, event):
item = Market.getInstance().getItem(event.itemID, eager='group.category')
Expand Down
15 changes: 10 additions & 5 deletions gui/builtinAdditionPanes/fighterView.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,12 @@ def __init__(self, parent):
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:
Expand All @@ -113,8 +117,6 @@ def fitChanged(self, event):

self.Refresh()

event.Skip()


class FighterDisplay(d.Display):

Expand Down Expand Up @@ -242,6 +244,11 @@ def fighterKey(self, fighter):
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)

Expand All @@ -251,7 +258,6 @@ def fitChanged(self, event):
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
Expand All @@ -271,7 +277,6 @@ def fitChanged(self, event):
self.unselectAll()

self.update(self.fighters)
event.Skip()

def addItem(self, event):
item = Market.getInstance().getItem(event.itemID, eager='group.category')
Expand Down
15 changes: 10 additions & 5 deletions gui/builtinAdditionPanes/implantView.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,12 @@ def __init__(self, parent):
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
Expand All @@ -91,8 +95,6 @@ def fitChanged(self, event):
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:
Expand Down Expand Up @@ -152,6 +154,11 @@ def kbEvent(self, event):
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)

Expand All @@ -161,7 +168,6 @@ def fitChanged(self, event):
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
Expand All @@ -180,7 +186,6 @@ def fitChanged(self, event):
self.unselectAll()

self.update(self.implants)
event.Skip()

def addItem(self, event):
item = Market.getInstance().getItem(event.itemID, eager='group.category')
Expand Down
8 changes: 5 additions & 3 deletions gui/builtinAdditionPanes/notesView.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ def OnKeyDown(self, event):
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)

Expand All @@ -43,14 +48,11 @@ def fitChanged(self, event):

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
Expand Down
8 changes: 5 additions & 3 deletions gui/builtinAdditionPanes/projectedView.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,11 @@ def fitSort(fit):
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))
Expand All @@ -178,7 +183,6 @@ def fitChanged(self, event):
if event.fitID is None and self.lastFitId is not None:
self.DeleteAllItems()
self.lastFitId = None
event.Skip()
return


Expand All @@ -195,8 +199,6 @@ def fitChanged(self, event):

self.refreshContents(fit)

event.Skip()

def refreshContents(self, fit):
stuff = []
if fit is not None:
Expand Down
7 changes: 4 additions & 3 deletions gui/builtinViews/fittingView.py
Original file line number Diff line number Diff line change
Expand Up @@ -604,8 +604,11 @@ def slotsChanged(self):
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:
Expand All @@ -619,8 +622,6 @@ def fitChanged(self, event):
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):
Expand Down
6 changes: 4 additions & 2 deletions gui/characterSelection.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,10 @@ def fitChanged(self, event):
"""
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()
Expand Down Expand Up @@ -257,8 +261,6 @@ def fitChanged(self, event):

self.toggleRefreshButton()

event.Skip()

def exportSkills(self, evt):
skillsMap = self._buildSkillsTooltipCondensed(self.reqs, skillsMap={})

Expand Down
6 changes: 4 additions & 2 deletions gui/mainMenuBar.py
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,10 @@ def __init__(self, mainFrame):
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)
Expand Down Expand Up @@ -203,8 +207,6 @@ def fitChanged(self, event):
else:
self.ignoreRestrictionItem.SetItemLabel("Disable Fitting Re&strictions")

event.Skip()

def fitRenamed(self, event):
self.refreshUndo()
event.Skip()
Expand Down
7 changes: 5 additions & 2 deletions gui/shipBrowser.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,11 +97,14 @@ def RefreshContent(self):
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()
Expand Down
Loading

0 comments on commit e6dce72

Please sign in to comment.