Add service functions for The Stupid Fleet Boosting and update eos as we need it

This commit is contained in:
DarkPhoenix
2011-11-21 21:11:22 +04:00
parent 97f3ccb0f7
commit 7990aa07e3
3 changed files with 74 additions and 2 deletions

2
eos

Submodule eos updated: 9f5b45eada...40c99f0d13

View File

@@ -32,6 +32,7 @@ from eos.types import State, Slot
from service.market import Market
from service.damagePattern import DamagePattern
from service.character import Character
from service.fleet import Fleet
class FitBackupThread(threading.Thread):
def __init__(self, path, callback):
@@ -174,6 +175,9 @@ class Fit(object):
return None
fit = eos.db.getFit(fitID)
sFlt = Fleet.getInstance()
if sFlt.isInLinearFleet(fit) is False:
sFlt.removeAssociatedFleetData(fit)
fit.calculateModifiedAttributes()
fit.fill()
eos.db.commit()

View File

@@ -18,7 +18,7 @@
#===============================================================================
import eos.db
from eos.types import Fleet as Fleet_
from eos.types import Fleet as Fleet_, Wing, Squad
import copy
class Fleet(object):
@@ -69,3 +69,71 @@ class Fleet(object):
def deleteFleetByID(self, ID):
fleet = self.getFleetByID(ID)
self.deleteFleet(fleet)
def makeLinearFleet(self, fit):
f = Fleet_()
w = Wing()
f.wings.append(w)
s = Squad()
w.squads.append(s)
s.members.append(fit)
eos.db.save(f)
def setLinearFleetCom(self, boostee, booster):
squadIDs = set(eos.db.getSquadsIDsWithFitID(boostee.ID))
squad = eos.db.getSquad(squadIDs.pop())
squad.wing.gang.leader = booster
squad.wing.gang.calculateModifiedAttributes()
def setLinearWingCom(self, boostee, booster):
squadIDs = set(eos.db.getSquadsIDsWithFitID(boostee.ID))
squad = eos.db.getSquad(squadIDs.pop())
squad.wing.leader = booster
squad.wing.gang.calculateModifiedAttributes()
def setLinearSquadCom(self, boostee, booster):
squadIDs = set(eos.db.getSquadsIDsWithFitID(boostee.ID))
squad = eos.db.getSquad(squadIDs.pop())
squad.leader = booster
squad.wing.gang.calculateModifiedAttributes()
def isInLinearFleet(self, fit):
sqIDs = eos.db.getSquadsIDsWithFitID(fit.ID)
if len(sqIDs) != 1:
return False
s = eos.db.getSquad(sqIDs[0])
if len(s.members) != 1:
return False
w = s.wing
if len(w.squads) != 1:
return False
f = w.gang
if len(f.wings) != 1:
return False
return True
def removeAssociatedFleetData(self, fit):
squadIDs = set(eos.db.getSquadsIDsWithFitID(fit.ID))
if len(squadIDs) == 0:
return
squads = list(eos.db.getSquad(sqID) for sqID in squadIDs)
wingIDs = set(squad.wing.ID for squad in squads)
fleetIDs = set(squad.wing.gang.ID for squad in squads)
for fleetID in fleetIDs:
fleet = eos.db.getFleet(fleetID)
for wing in fleet.wings:
wingIDs.add(wing.ID)
for wingID in wingIDs:
wing = eos.db.getWing(wingID)
for squad in wing.squads:
squadIDs.add(squad.ID)
for squadID in squadIDs:
squad = eos.db.getSquad(squadID)
eos.db.remove(squad)
for wingID in wingIDs:
wing = eos.db.getWing(wingID)
eos.db.remove(wing)
for fleetID in fleetIDs:
fleet = eos.db.getFleet(fleetID)
eos.db.remove(fleet)
return