コード例 #1
0
        public override void Initialize()
        {
            this.m_Target                = (IGameObject)null;
            this.m_ParentBerserker       = (VonNeumannNeoBerserkerControl)null;
            this.m_State                 = VonNeumannDiscStates.SEEK;
            this.m_PodsLaunched          = false;
            this.m_Discs                 = new List <VonNeumannDiscControl>();
            this.m_PossessorBoardingPods = new List <Ship>();
            this.m_UpdateDelay           = 0;
            if (this.m_DiscType != VonNeumannDiscTypes.POSSESSOR)
            {
                return;
            }
            Matrix rotationYpr = Matrix.CreateRotationYPR(this.m_Disc.Maneuvering.Rotation);

            rotationYpr.Position = this.m_Disc.Maneuvering.Position;
            int num = this.m_Disc.BattleRiderMounts.Count <BattleRiderMount>();

            for (int index = 0; index < num; ++index)
            {
                Ship newShip = CombatAIController.CreateNewShip(this.m_Game.Game, rotationYpr, VonNeumann.StaticShipDesigns[VonNeumann.VonNeumannShipDesigns.BoardingPod].DesignId, this.m_Disc.ObjectID, this.m_Disc.InputID, this.m_Disc.Player.ObjectID);
                if (newShip != null)
                {
                    this.m_PossessorBoardingPods.Add(newShip);
                }
            }
            this.m_State = VonNeumannDiscStates.ACTIVATEBOARDINGPODS;
        }
コード例 #2
0
 public override void ObjectRemoved(IGameObject obj)
 {
     if (this.m_Target == obj)
     {
         this.SetTarget((IGameObject)null);
         if (this.m_Disc.CombatStance != CombatStance.NO_STANCE)
         {
             this.m_Disc.SetCombatStance(CombatStance.NO_STANCE);
         }
         this.m_Disc.Maneuvering.PostSetProp("SetStanceTarget", (object)0, (object)0.0f);
     }
     if (this.m_ParentBerserker != null && this.m_ParentBerserker.GetShip() == obj)
     {
         this.m_ParentBerserker = (VonNeumannNeoBerserkerControl)null;
     }
     foreach (VonNeumannDiscControl disc in this.m_Discs)
     {
         if (disc.GetShip() == obj)
         {
             this.m_Discs.Remove(disc);
             break;
         }
     }
     foreach (Ship possessorBoardingPod in this.m_PossessorBoardingPods)
     {
         if (possessorBoardingPod == obj)
         {
             this.m_PossessorBoardingPods.Remove(possessorBoardingPod);
             break;
         }
     }
 }
コード例 #3
0
 public override void ObjectRemoved(IGameObject obj)
 {
     if (this.m_Target == obj)
     {
         this.SetTarget((IGameObject)null);
     }
     if (this.m_ParentBerserker == null || this.m_ParentBerserker.GetShip() != obj)
     {
         return;
     }
     this.m_ParentBerserker = (VonNeumannNeoBerserkerControl)null;
 }
コード例 #4
0
 public override void FindParent(IEnumerable <CombatAIController> controllers)
 {
     foreach (CombatAIController controller in controllers)
     {
         if (controller is VonNeumannNeoBerserkerControl)
         {
             VonNeumannNeoBerserkerControl berserkerControl = controller as VonNeumannNeoBerserkerControl;
             if (berserkerControl.IsThisMyMom(this.m_Pyramid))
             {
                 berserkerControl.AddChild((CombatAIController)this);
                 this.m_ParentBerserker = berserkerControl;
                 break;
             }
         }
     }
 }
コード例 #5
0
 public override void Initialize()
 {
     this.m_Target          = (IGameObject)null;
     this.m_ParentBerserker = (VonNeumannNeoBerserkerControl)null;
 }