private void ThinkSeek()
 {
     if (this.m_NumPodsRemain == 0)
     {
         this.m_State = VonNeumannSeekerStates.INITFLEE;
     }
     else if (this.m_CurrentTarget == null)
     {
         float num = float.MaxValue;
         foreach (PlanetTarget availableTarget in this.m_AvailableTargets)
         {
             if (!availableTarget.HasBeenVisted)
             {
                 float lengthSquared = (availableTarget.Planet.Parameters.Position - this.m_VonNeumannSeeker.Position).LengthSquared;
                 if ((double)lengthSquared < (double)num)
                 {
                     num = lengthSquared;
                     this.m_CurrentTarget = availableTarget.Planet;
                 }
             }
         }
         this.m_VonNeumannSeeker.SetShipTarget(this.m_CurrentTarget != null ? this.m_CurrentTarget.ObjectID : 0, Vector3.Zero, true, 0);
         if (this.m_CurrentTarget != null)
         {
             return;
         }
         this.m_State = VonNeumannSeekerStates.INITFLEE;
     }
     else
     {
         this.m_State = VonNeumannSeekerStates.TRACK;
     }
 }
        private void ThinkWait()
        {
            bool flag = true;

            foreach (Ship neumannSeekerPod in this.m_VonNeumannSeekerPods)
            {
                if (!neumannSeekerPod.DockedWithParent)
                {
                    flag = false;
                    break;
                }
            }
            if (!flag)
            {
                return;
            }
            foreach (PlanetTarget availableTarget in this.m_AvailableTargets)
            {
                if (availableTarget.Planet == this.m_CurrentTarget)
                {
                    availableTarget.HasBeenVisted = true;
                    break;
                }
            }
            this.m_CurrentTarget = (StellarBody)null;
            this.m_State         = VonNeumannSeekerStates.SEEK;
        }
 private void ThinkIntegrateChild()
 {
     if (this.m_LoadingPods.Count == 0)
     {
         this.m_State = VonNeumannSeekerStates.SEEK;
     }
     else
     {
         bool flag = true;
         foreach (GameObject loadingPod in this.m_LoadingPods)
         {
             if (loadingPod.ObjectStatus != GameObjectStatus.Ready)
             {
                 flag = false;
             }
         }
         if (!flag)
         {
             return;
         }
         foreach (Ship loadingPod in this.m_LoadingPods)
         {
             loadingPod.Player  = this.m_VonNeumannSeeker.Player;
             loadingPod.Visible = this.m_VonNeumannSeeker.Visible;
             loadingPod.Active  = true;
             this.m_Game.CurrentState.AddGameObject((IGameObject)loadingPod, false);
             this.m_VonNeumannSeekerPods.Add(loadingPod);
         }
         this.m_LoadingPods.Clear();
         this.m_State = VonNeumannSeekerStates.SEEK;
     }
 }
 public override void ForceFlee()
 {
     if (this.m_State == VonNeumannSeekerStates.INITFLEE || this.m_State == VonNeumannSeekerStates.FLEE)
     {
         return;
     }
     this.m_State = VonNeumannSeekerStates.INITFLEE;
 }
 private void ThinkFlee()
 {
     if (this.m_VonNeumannSeeker.CombatStance != CombatStance.RETREAT)
     {
         this.m_VonNeumannSeeker.SetCombatStance(CombatStance.RETREAT);
     }
     if (!this.m_VonNeumannSeeker.HasRetreated)
     {
         return;
     }
     this.m_State = VonNeumannSeekerStates.VANISH;
 }
 private void ThinkBombard()
 {
     if (this.m_CurrentTarget == null)
     {
         this.m_State = VonNeumannSeekerStates.SEEK;
     }
     else
     {
         this.m_VonNeumannSeeker.PostSetProp("LaunchBattleriders");
         this.m_State = VonNeumannSeekerStates.LAUNCHING;
     }
 }
        private void ThinkLaunching()
        {
            bool flag = true;

            foreach (Ship neumannSeekerPod in this.m_VonNeumannSeekerPods)
            {
                if (neumannSeekerPod.DockedWithParent)
                {
                    flag = false;
                    break;
                }
            }
            if (!flag)
            {
                return;
            }
            this.m_State = VonNeumannSeekerStates.WAIT;
        }
        public override void Initialize()
        {
            this.m_VonNeumannSeekerPods = new List <Ship>();
            this.m_LoadingPods          = new List <Ship>();
            this.m_AvailableTargets     = new List <PlanetTarget>();
            this.m_CurrentTarget        = (StellarBody)null;
            this.m_State    = VonNeumannSeekerStates.SEEK;
            this.m_Vanished = false;
            Matrix rotationYpr = Matrix.CreateRotationYPR(this.m_VonNeumannSeeker.Maneuvering.Rotation);

            rotationYpr.Position = this.m_VonNeumannSeeker.Maneuvering.Position;
            int designId = VonNeumann.StaticShipDesigns[VonNeumann.VonNeumannShipDesigns.SeekerProbe].DesignId;

            for (int index = 0; index < 12; ++index)
            {
                Ship newShip = CombatAIController.CreateNewShip(this.m_Game.Game, rotationYpr, designId, this.m_VonNeumannSeeker.ObjectID, this.m_VonNeumannSeeker.InputID, this.m_VonNeumannSeeker.Player.ObjectID);
                if (newShip != null)
                {
                    this.m_LoadingPods.Add(newShip);
                    ++this.m_NumPodsRemain;
                }
            }
            this.m_State = VonNeumannSeekerStates.INTEGRATECHILD;
        }
 private void ThinkTrack()
 {
     if (this.m_CurrentTarget == null)
     {
         this.m_State = VonNeumannSeekerStates.SEEK;
     }
     else
     {
         Vector3 position  = this.m_CurrentTarget.Parameters.Position;
         float   num1      = (float)((double)this.m_CurrentTarget.Parameters.Radius + 750.0 + 500.0);
         Vector3 vector3_1 = position;
         Vector3 vector3_2 = this.m_VonNeumannSeeker.Position - vector3_1;
         vector3_2.Y = 0.0f;
         double  num2      = (double)vector3_2.Normalize();
         Vector3 targetPos = vector3_1 + vector3_2 * (num1 - 100f);
         Vector3 look      = vector3_2 * -1f;
         this.m_VonNeumannSeeker.Maneuvering.PostAddGoal(targetPos, look);
         if ((double)(this.m_VonNeumannSeeker.Position - targetPos).LengthSquared >= (double)num1 * (double)num1)
         {
             return;
         }
         this.m_State = VonNeumannSeekerStates.BOMBARD;
     }
 }
 private void ThinkInitFlee()
 {
     this.m_State = VonNeumannSeekerStates.FLEE;
     this.m_VonNeumannSeeker.PostSetProp("RecoverBattleriders");
 }