Fix EFT import bug another way

This commit is contained in:
DarkPhoenix
2018-12-14 18:32:45 +03:00
parent 51ef3ec758
commit af37ec21e9
2 changed files with 23 additions and 9 deletions

View File

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

View File

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