Take into consideration effects as well

This commit is contained in:
DarkPhoenix
2019-04-21 11:30:24 +03:00
parent 4d21fa517a
commit 7abc14eb7f
3 changed files with 10 additions and 7 deletions

View File

@@ -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,

View File

@@ -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):

View File

@@ -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