Пример #1
0
    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:]
Пример #2
0
 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)
Пример #3
0
 def CheckCanCreateFormation(self, formationID, availableProbes):
     minProbesNeeded = formations.GetNumberOfProbesInFormation(formationID)
     if len(self.probeData) + availableProbes < minProbesNeeded:
         raise UserError('NotEnoughProbesToFormFormation',
                         {'minProbes': minProbesNeeded})
Пример #4
0
 def CanCreateFormation(self, formationID, availableProbes):
     minProbesNeeded = formations.GetNumberOfProbesInFormation(formationID)
     return len(self.probeData) + availableProbes >= minProbesNeeded