def CreateFormation(self, formationID, probeIDs=None, initialPosition=(0, 0, 0), formationSize=None): self.ClearCurrentFormation() self.formationID = formationID if initialPosition is not None: self.centerPosition = initialPosition minProbesNeeded = formations.GetNumberOfProbesInFormation(formationID) self.probes = [None] * minProbesNeeded if probeIDs is None: return [] for probeID in probeIDs[:minProbesNeeded]: self.AddProbeToFormation(probeID) return probeIDs[minProbesNeeded:]
def MoveProbesToFormation(self, formationID, LaunchProbes, availableProbes=0): self.CheckCanCreateFormation(formationID, availableProbes) excessProbeIDs = self.formationTracker.CreateFormation( formationID, self.probeData.keys(), initialPosition=self.GetCenterOfActiveProbes()) if excessProbeIDs: self.RecoverProbes(excessProbeIDs, self.scanSvc.AskServerToRecallProbes) return probesNeeded = formations.GetNumberOfProbesInFormation(formationID) probes = len(self.GetActiveProbes()) if len(self.probeData) < probesNeeded: LaunchProbes(probesNeeded - probes)
def CheckCanCreateFormation(self, formationID, availableProbes): minProbesNeeded = formations.GetNumberOfProbesInFormation(formationID) if len(self.probeData) + availableProbes < minProbesNeeded: raise UserError('NotEnoughProbesToFormFormation', {'minProbes': minProbesNeeded})
def CanCreateFormation(self, formationID, availableProbes): minProbesNeeded = formations.GetNumberOfProbesInFormation(formationID) return len(self.probeData) + availableProbes >= minProbesNeeded