Add implant, booster and cargo support to fit price optimization

This commit is contained in:
DarkPhoenix
2019-03-03 19:57:59 +03:00
parent 647c093451
commit b03860e765
4 changed files with 31 additions and 1 deletions

View File

@@ -30,6 +30,7 @@ pyfalog = Logger(__name__)
class Booster(HandledItem, ItemAttrShortcut):
def __init__(self, item):
self.__item = item
@@ -147,3 +148,17 @@ class Booster(HandledItem, ItemAttrShortcut):
copyEffect.active = sideEffect.active
return copy
def rebase(self, item):
active = self.active
sideEffectStates = {se.effectID: se.active for se in self.sideEffects}
Booster.__init__(self, item)
self.active = active
for sideEffect in self.sideEffects:
if sideEffect.effectID in sideEffectStates:
sideEffect.active = sideEffectStates[sideEffect.effectID]
def __repr__(self):
return "Booster(ID={}, name={}) at {}".format(
self.item.ID, self.item.name, hex(id(self))
)

View File

@@ -89,3 +89,13 @@ class Cargo(HandledItem, ItemAttrShortcut):
copy = Cargo(self.item)
copy.amount = self.amount
return copy
def rebase(self, item):
amount = self.amount
Cargo.__init__(self, item)
self.amount = amount
def __repr__(self):
return "Cargo(ID={}, name={}) at {}".format(
self.item.ID, self.item.name, hex(id(self))
)

View File

@@ -115,6 +115,11 @@ class Implant(HandledItem, ItemAttrShortcut):
copy.active = self.active
return copy
def rebase(self, item):
active = self.active
Implant.__init__(self, item)
self.active = active
def __repr__(self):
return "Implant(ID={}, name={}) at {}".format(
self.item.ID, self.item.name, hex(id(self))

View File

@@ -234,7 +234,7 @@ class Price:
def cb(replacementMap):
changes = False
for container in (fit.modules, fit.drones, fit.fighters):
for container in (fit.modules, fit.drones, fit.fighters, fit.implants, fit.boosters, fit.cargo):
for obj in container:
charge = getattr(obj, 'charge', None)
if charge is not None and charge in replacementMap: