From af37ec21e9637027f517a437eef85c1a02f51b8e Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Fri, 14 Dec 2018 18:32:45 +0300 Subject: [PATCH] Fix EFT import bug another way --- eos/effectHandlerHelpers.py | 20 +++++++++++++++++--- service/port/eft.py | 12 ++++++------ 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/eos/effectHandlerHelpers.py b/eos/effectHandlerHelpers.py index 345234d38..25d1ddcb0 100644 --- a/eos/effectHandlerHelpers.py +++ b/eos/effectHandlerHelpers.py @@ -132,15 +132,29 @@ class HandledModuleList(HandledList): self.remove(mod) return - self.appendIgnoreEmpty(mod) - - def appendIgnoreEmpty(self, mod): mod.position = len(self) HandledList.append(self, mod) if mod.isInvalid: self.remove(mod) return + def replaceRackPosition(self, rackPosition, mod): + listPositions = [] + for currMod in self: + if currMod.slot == mod.slot: + listPositions.append(currMod.position) + listPositions.sort() + try: + modListPosition = listPositions[rackPosition] + except IndexError: + self.append(mod) + else: + self.toDummy(modListPosition) + if not mod.isEmpty: + self.toModule(modListPosition, mod) + if mod.isInvalid: + self.toDummy(modListPosition) + def insert(self, index, mod): mod.position = index i = index diff --git a/service/port/eft.py b/service/port/eft.py index a1e99f45c..1cc262e78 100644 --- a/service/port/eft.py +++ b/service/port/eft.py @@ -251,14 +251,14 @@ def importEft(eftString): aFit.addCargo(itemSpec) # Subsystems first because they modify slot amount - for m in aFit.subsystems: + for i, m in enumerate(aFit.subsystems): if m is None: dummy = Module.buildEmpty(aFit.getSlotByContainer(aFit.subsystems)) dummy.owner = fit - fit.modules.appendIgnoreEmpty(dummy) + fit.modules.replaceRackPosition(i, dummy) elif m.fits(fit): m.owner = fit - fit.modules.appendIgnoreEmpty(m) + fit.modules.replaceRackPosition(i, m) svcFit.getInstance().recalc(fit) # Other stuff @@ -269,16 +269,16 @@ def importEft(eftString): aFit.modulesMed, aFit.modulesLow, ): - for m in modRack: + for i, m in enumerate(modRack): if m is None: dummy = Module.buildEmpty(aFit.getSlotByContainer(modRack)) dummy.owner = fit - fit.modules.appendIgnoreEmpty(dummy) + fit.modules.replaceRackPosition(i, dummy) elif m.fits(fit): m.owner = fit if not m.isValidState(m.state): pyfalog.warning('service.port.eft.importEft: module {} cannot have state {}', m, m.state) - fit.modules.appendIgnoreEmpty(m) + fit.modules.replaceRackPosition(i, m) for implant in aFit.implants: fit.implants.append(implant) for booster in aFit.boosters: