diff --git a/eos b/eos index bb71a4d58..ff0ffa77f 160000 --- a/eos +++ b/eos @@ -1 +1 @@ -Subproject commit bb71a4d58951c2c94bdd65df3b8e3b188b7e0118 +Subproject commit ff0ffa77ff5159f7b0ad7a30b7a56a4ebe978049 diff --git a/gui/gangView.py b/gui/gangView.py index 2f7b4696d..adea6b0cc 100644 --- a/gui/gangView.py +++ b/gui/gangView.py @@ -166,7 +166,7 @@ class GangView ( ScrolledPanel ): elif type == 2: fleetSrv.setLinearSquadCom(boostee, booster) - fleetSrv.recalcFleet(boostee) + sFit.recalc(boostee) wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFitID)) def fitSelected(self, event): @@ -226,7 +226,7 @@ class GangView ( ScrolledPanel ): fleetSrv.setLinearWingCom(boostee, booster) elif type == 2: fleetSrv.setLinearSquadCom(boostee, booster) - fleetSrv.recalcFleet(boostee) + sFit.recalc(boostee) wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFitID)) def RefreshCharacterList(self, event = None): diff --git a/service/fit.py b/service/fit.py index 401ffeb07..fb9353107 100644 --- a/service/fit.py +++ b/service/fit.py @@ -119,7 +119,7 @@ class Fit(object): fit.damagePattern = self.pattern fit.character = self.character eos.db.save(fit) - fit.calculateModifiedAttributes() + self.recalc(fit) return fit.ID def renameFit(self, fitID, newName): @@ -152,8 +152,7 @@ class Fit(object): fit = eos.db.getFit(fitID) fit.factorReload = not fit.factorReload eos.db.commit() - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) def switchFit(self, fitID): if fitID is None: @@ -167,8 +166,7 @@ class Fit(object): fit.damagePattern = self.pattern eos.db.commit() - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) def getFit(self, fitID): if fitID is None: @@ -178,7 +176,7 @@ class Fit(object): sFlt = Fleet.getInstance() if sFlt.isInLinearFleet(fit) is False: sFlt.removeAssociatedFleetData(fit) - fit.calculateModifiedAttributes() + self.recalc(fit) fit.fill() eos.db.commit() return fit @@ -203,8 +201,7 @@ class Fit(object): fit.implants.freeSlot(implant) fit.implants.append(implant) - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) return True def removeImplant(self, fitID, position): @@ -214,8 +211,7 @@ class Fit(object): fit = eos.db.getFit(fitID) implant = fit.implants[position] fit.implants.remove(implant) - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) return True def addBooster(self, fitID, itemID): @@ -231,8 +227,7 @@ class Fit(object): fit.boosters.freeSlot(booster) fit.boosters.append(booster) - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) return True def removeBooster(self, fitID, position): @@ -242,8 +237,7 @@ class Fit(object): fit = eos.db.getFit(fitID) booster = fit.boosters[position] fit.boosters.remove(booster) - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) return True def project(self, fitID, thing): @@ -276,8 +270,7 @@ class Fit(object): fit.projectedModules.append(module) eos.db.commit() - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) def toggleProjected(self, fitID, thing, click): fit = eos.db.getFit(fitID) @@ -292,8 +285,7 @@ class Fit(object): thing.state = State.OFFLINE eos.db.commit() - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) def removeProjected(self, fitID, thing): fit = eos.db.getFit(fitID) @@ -305,8 +297,7 @@ class Fit(object): fit.projectedFits.remove(thing) eos.db.commit() - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) def appendModule(self, fitID, itemID): fit = eos.db.getFit(fitID) @@ -326,8 +317,7 @@ class Fit(object): if m.isValidState(State.ACTIVE): m.state = State.ACTIVE - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) self.checkStates(fit, m) fit.fill() eos.db.commit() @@ -343,8 +333,7 @@ class Fit(object): numSlots = len(fit.modules) fit.modules.toDummy(position) - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) self.checkStates(fit, None) fit.fill() eos.db.commit() @@ -381,8 +370,7 @@ class Fit(object): return False drone.amount += 1 eos.db.commit() - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) return True else: return False @@ -403,8 +391,7 @@ class Fit(object): d2.amount += d1.amount d2.amountActive += d1.amountActive if d1.amountActive > 0 else -d2.amountActive eos.db.commit() - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) return True def splitDrones(self, fit, d, amount, l): @@ -444,8 +431,7 @@ class Fit(object): del fit.drones[i] eos.db.commit() - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) return True def toggleDrone(self, fitID, i): @@ -457,8 +443,7 @@ class Fit(object): d.amountActive = d.amount eos.db.commit() - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) return True def toggleImplant(self, fitID, i): @@ -467,8 +452,7 @@ class Fit(object): implant.active = not implant.active eos.db.commit() - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) return True def toggleBooster(self, fitID, i): @@ -477,8 +461,7 @@ class Fit(object): booster.active = not booster.active eos.db.commit() - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) return True def changeChar(self, fitID, charID): @@ -490,8 +473,7 @@ class Fit(object): fit = eos.db.getFit(fitID) fit.character = self.character = eos.db.getCharacter(charID) - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) def isAmmo(self, itemID): return eos.db.getItem(itemID).category.name == "Charge" @@ -507,8 +489,7 @@ class Fit(object): if mod.isValidCharge(ammo): mod.charge = ammo - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) def getDamagePattern(self, fitID): if fitID is None: @@ -525,8 +506,7 @@ class Fit(object): fit.damagePattern = self.pattern = pattern eos.db.commit() - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) def setAsPattern(self, fitID, ammo): if fitID is None: @@ -543,8 +523,7 @@ class Fit(object): setattr(dp, "%sAmount" % attr, ammo.getAttribute("%sDamage" % attr)) fit.damagePattern = dp - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) def exportFit(self, fitID): fit = eos.db.getFit(fitID) @@ -627,14 +606,12 @@ class Fit(object): fit = eos.db.getFit(fitID) # As some items may affect state-limiting attributes of the ship, calculate new attributes first - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) # Then, check states of all modules and change where needed changed = self.checkStates(fit, base) # If any state was changed, recalulate attributes again if changed is True: - fit.clear() - fit.calculateModifiedAttributes() + self.recalc(fit) # Old state : New State localMap = {State.OVERHEATED: State.ACTIVE, @@ -665,3 +642,10 @@ class Fit(object): return state else: return currState + + def recalc(self, fit): + fit.clear() + if fit.fleet is not None: + fit.fleet.recalculateLinear() + else: + fit.calculateModifiedAttributes() diff --git a/service/fleet.py b/service/fleet.py index 311aa8246..b536c9316 100644 --- a/service/fleet.py +++ b/service/fleet.py @@ -77,6 +77,7 @@ class Fleet(object): s = Squad() w.squads.append(s) s.members.append(fit) + fit.fleet = f eos.db.save(f) def setLinearFleetCom(self, boostee, booster): @@ -160,6 +161,7 @@ class Fleet(object): for fleetID in fleetIDs: fleet = eos.db.getFleet(fleetID) eos.db.remove(fleet) + fit.fleet = None return def anyBoosters(self, squad): @@ -177,12 +179,3 @@ class Fleet(object): w = s.wing f = w.gang return (f.leader, w.leader, s.leader) - - def recalcFleet(self, fit): - squadIDs = eos.db.getSquadsIDsWithFitID(fit.ID) - if len(squadIDs) > 0: - eos.db.getSquad(squadIDs[0]).wing.gang.recalculateLinear() - else: - fit.clear() - fit.calculateModifiedAttributes() -