From 7abc14eb7faf9feee3899f4a36f663bafd375928 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Sun, 21 Apr 2019 11:30:24 +0300 Subject: [PATCH] Take into consideration effects as well --- gui/builtinContextMenus/moduleAmmoChange.py | 4 ++-- gui/builtinViews/fittingView.py | 6 +++--- gui/fitCommands/helpers.py | 7 +++++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/gui/builtinContextMenus/moduleAmmoChange.py b/gui/builtinContextMenus/moduleAmmoChange.py index 33cf5f78f..86dc04e33 100644 --- a/gui/builtinContextMenus/moduleAmmoChange.py +++ b/gui/builtinContextMenus/moduleAmmoChange.py @@ -6,7 +6,7 @@ import gui.mainFrame from eos.const import FittingHardpoint from gui.bitmap_loader import BitmapLoader from gui.contextMenu import ContextMenu -from gui.fitCommands.helpers import filterModsByGroups +from gui.fitCommands.helpers import getSimilarModPositions from service.fit import Fit from service.market import Market from service.settings import ContextMenuSettings @@ -236,7 +236,7 @@ class ChangeModuleAmmo(ContextMenu): else: return selectedModule = self.modules[0] - positions = filterModsByGroups(modContainer, selectedModule) + positions = getSimilarModPositions(modContainer, selectedModule) self.mainFrame.command.Submit(command( fitID=fitID, positions=positions, diff --git a/gui/builtinViews/fittingView.py b/gui/builtinViews/fittingView.py index 2e920b136..7e58b8777 100644 --- a/gui/builtinViews/fittingView.py +++ b/gui/builtinViews/fittingView.py @@ -42,7 +42,7 @@ from gui.utils.staticHelpers import DragDropHelper from service.fit import Fit from service.market import Market from config import slotColourMap -from gui.fitCommands.helpers import filterModsByGroups +from gui.fitCommands.helpers import getSimilarModPositions pyfalog = Logger(__name__) @@ -446,7 +446,7 @@ class FittingView(d.Display): self.mainFrame.command.Submit(cmd.GuiAddLocalModuleCommand(fitID=fitID, itemID=itemID)) elif item.isCharge and dstMod is not None and not dstMod.isEmpty: if mstate.altDown: - positions = filterModsByGroups(fit.modules, dstMod) + positions = getSimilarModPositions(fit.modules, dstMod) else: positions = [fit.modules.index(dstMod)] if len(positions) > 0: @@ -674,7 +674,7 @@ class FittingView(d.Display): return mainPosition = fit.modules.index(mainMod) if event.altDown: - positions = filterModsByGroups(fit.modules, mainMod) + positions = getSimilarModPositions(fit.modules, mainMod) else: positions = [] for position, mod in enumerate(fit.modules): diff --git a/gui/fitCommands/helpers.py b/gui/fitCommands/helpers.py index 8320f0178..dfc72e4a1 100644 --- a/gui/fitCommands/helpers.py +++ b/gui/fitCommands/helpers.py @@ -346,10 +346,11 @@ def restoreCheckedStates(fit, stateInfo, ignoreModPoss=()): fit.projectedDrones[pos].amountActive = amountActive -def filterModsByGroups(mods, mainMod): +def getSimilarModPositions(mods, mainMod): sMkt = Market.getInstance() mainGroupID = getattr(sMkt.getGroupByItem(mainMod.item), 'ID', None) mainMktGroupID = getattr(sMkt.getMarketGroupByItem(mainMod.item), 'ID', None) + mainEffects = set(getattr(mainMod.item, 'effects', ())) positions = [] for position, mod in enumerate(mods): # Always include selected module itself @@ -365,9 +366,11 @@ def filterModsByGroups(mods, mainMod): # And modules from the same group and market group too modGroupID = getattr(sMkt.getGroupByItem(mod.item), 'ID', None) modMktGroupID = getattr(sMkt.getMarketGroupByItem(mod.item), 'ID', None) + modEffects = set(getattr(mod.item, 'effects', ())) if ( modGroupID is not None and modGroupID == mainGroupID and - modMktGroupID is not None and modMktGroupID == mainMktGroupID + modMktGroupID is not None and modMktGroupID == mainMktGroupID and + modEffects == mainEffects ): positions.append(position) continue