Use new fit recalculation method, which takes into consideration fleet stuff

This commit is contained in:
DarkPhoenix
2011-11-22 03:28:20 +04:00
parent d5e46b457d
commit 45795a3bce
4 changed files with 37 additions and 60 deletions

2
eos

Submodule eos updated: bb71a4d589...ff0ffa77ff

View File

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

View File

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

View File

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