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"); }