Take into consideration effects as well
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user