From 76b447e51765909485d467d0cb65301a4ef15c5e Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Tue, 22 Nov 2011 20:25:31 +0400 Subject: [PATCH] Related to fleet service updates --- eos | 2 +- service/fit.py | 3 ++- service/fleet.py | 52 +++++++++++++++++++++++++++++++++++++++--------- 3 files changed, 46 insertions(+), 11 deletions(-) diff --git a/eos b/eos index c14478668..2b80b0321 160000 --- a/eos +++ b/eos @@ -1 +1 @@ -Subproject commit c144786682cb7245c903522df8ca86654dde28ac +Subproject commit 2b80b0321fa19fa2d042230689c51cfd84011899 diff --git a/service/fit.py b/service/fit.py index 4afee6439..1287d1379 100644 --- a/service/fit.py +++ b/service/fit.py @@ -78,6 +78,7 @@ class Fit(object): def __init__(self): self.pattern = DamagePattern.getInstance().getDamagePattern("Uniform") self.character = Character.getInstance().all0() + self.dirtyFitIDs = set() def getAllFits(self): fits = eos.db.getFitList() @@ -651,4 +652,4 @@ class Fit(object): def recalc(self, fit, withBoosters=False): fit.clear() - fit.calculateModifiedAttributes(withBoosters=withBoosters) + fit.calculateModifiedAttributes(withBoosters=withBoosters, dirtyStorage=self.dirtyFitIDs) diff --git a/service/fleet.py b/service/fleet.py index 7001aa5ea..eec2bcf92 100644 --- a/service/fleet.py +++ b/service/fleet.py @@ -88,11 +88,17 @@ class Fleet(object): self.makeLinearFleet(boostee) squadIDs = set(eos.db.getSquadsIDsWithFitID(boostee.ID)) squad = eos.db.getSquad(squadIDs.pop()) + if squad.wing.gang.leader is not None and booster is None: + try: + squad.wing.gang.leader.boostsFits.remove(boostee.ID) + except KeyError: + pass squad.wing.gang.leader = booster - if self.anyBoosters(squad): - squad.wing.gang.recalculateLinear() - else: + if self.anyBoosters(squad) is False: self.removeAssociatedFleetData(boostee) + from service.fit import Fit + sFit = Fit.getInstance() + sFit.recalc(boostee, withBoosters=True) def setLinearWingCom(self, boostee, booster): if boostee == booster: @@ -102,11 +108,17 @@ class Fleet(object): self.makeLinearFleet(boostee) squadIDs = set(eos.db.getSquadsIDsWithFitID(boostee.ID)) squad = eos.db.getSquad(squadIDs.pop()) + if squad.wing.leader is not None and booster is None: + try: + squad.wing.leader.boostsFits.remove(boostee.ID) + except KeyError: + pass squad.wing.leader = booster - if self.anyBoosters(squad): - squad.wing.gang.recalculateLinear() - else: + if self.anyBoosters(squad) is False: self.removeAssociatedFleetData(boostee) + from service.fit import Fit + sFit = Fit.getInstance() + sFit.recalc(boostee, withBoosters=True) def setLinearSquadCom(self, boostee, booster): if boostee == booster: @@ -116,11 +128,18 @@ class Fleet(object): self.makeLinearFleet(boostee) squadIDs = set(eos.db.getSquadsIDsWithFitID(boostee.ID)) squad = eos.db.getSquad(squadIDs.pop()) + if squad.leader is not None and booster is None: + try: + squad.leader.boostsFits.remove(boostee.ID) + except KeyError: + pass squad.leader = booster - if self.anyBoosters(squad): - squad.wing.gang.recalculateLinear() - else: + if self.anyBoosters(squad) is False: self.removeAssociatedFleetData(boostee) + from service.fit import Fit + sFit = Fit.getInstance() + sFit.recalc(boostee, withBoosters=True) + def getLinearFleet(self, fit): sqIDs = eos.db.getSquadsIDsWithFitID(fit.ID) @@ -154,12 +173,27 @@ class Fleet(object): squadIDs.add(squad.ID) for squadID in squadIDs: squad = eos.db.getSquad(squadID) + if squad.leader is not None: + try: + squad.leader.boostsFits.remove(fit.ID) + except KeyError: + pass eos.db.remove(squad) for wingID in wingIDs: wing = eos.db.getWing(wingID) + if wing.leader is not None: + try: + wing.leader.boostsFits.remove(fit.ID) + except KeyError: + pass eos.db.remove(wing) for fleetID in fleetIDs: fleet = eos.db.getFleet(fleetID) + if fleet.leader is not None: + try: + fleet.leader.boostsFits.remove(fit.ID) + except KeyError: + pass eos.db.remove(fleet) fit.fleet = None return