コード例 #1
0
 protected override bool OnActivated(ActionResult actionResult, float dt)
 {
     buildUpDelay.Empty();
     buildUpDelay.Value += dt;
     stage = 0;
     SetStage(actionResult);
     return(true);
 }
コード例 #2
0
 public override void Update(float dt)
 {
     if (didCollision)
     {
         didCollision = false;
         damageDelay.Empty();
     }
     damageDelay.Value += dt;
     base.Update(dt);
 }
コード例 #3
0
 public override void OnCollision(GameResult gameResult, IControlable collider)
 {
     if (delay.IsFull)
     {
         delay.Empty();
         if (rand.NextDouble() > .9 && !(collider is ImpulseWave))
         {
             this.ShipState.Health.Value -= DefaultCollisonDamageToSelf;
         }
         base.OnCollision(gameResult, collider);
     }
 }
コード例 #4
0
 public override void Update(float dt)
 {
     base.Update(dt);
     rechargeDelay.Value += dt;
     if (rechargeDelay.IsFull)
     {
         this.shipState.Energy.Fill();
     }
     if (this.shipState.Energy.IsFull)
     {
         rechargeDelay.Empty();
     }
 }
コード例 #5
0
        void UpdateLinearMovement(float dt, IControlable host)
        {
            if (dt == 0)
            {
                return;
            }
            ControlInput input = host.CurrentControlInput;

            if (input[InputAction.MoveForward] && delay.IsFull)
            {
                delay.Empty();
                angle += MathHelper.PI;
            }
            DefaultControlHandler.ApplyThrust(dt, host, Vector2D.FromLengthAndAngle(1, angle), 1);
        }
コード例 #6
0
 public void Play(float dt)
 {
     if (Name != null)
     {
         if (playDelay == null)
         {
             MeleeSound.QueueSound(Name);
         }
         else
         {
             playDelay.Value += dt;
             if (playDelay.IsFull)
             {
                 playDelay.Empty();
                 MeleeSound.QueueSound(Name);
             }
         }
     }
 }
コード例 #7
0
 public override void ApplyEffect(GameResult gameResult, float dt)
 {
     damageDelay.Value += dt;
     if (damageDelay.IsFull)
     {
         damageDelay.Empty();
         float number = rand.Next(0, 256);
         if (16 > number)
         {
             this.IsExpired = true;
             Exhausted      = true;
         }
         else if (144 > number)
         {
             effectSounds.Applied.Play();
             attachie.ShipState.Health.Value -= damageAmount;
         }
     }
 }
コード例 #8
0
        public void OnAction(GameResult gameResult, float dt)
        {
            ShipStateChange cost;
            ActionResult    actionResult = new ActionResult(gameResult);

            if (activated && source.ShipState.MeetsCost(cost = (-costs.RunningCost * dt)) && AcquireTarget())
            {
                if (OnRunning(actionResult, dt))
                {
                    if (actionResult.ApplyCosts)
                    {
                        source.ShipState.Change(cost);
                    }
                    if (actionResult.PlaySound)
                    {
                        actionSounds.Running.Play(dt);
                    }
                }
                else
                {
                    activated = false;
                }
                return;
            }
            else if (Ready && source.ShipState.MeetsCost(cost = (-costs.ActivationCost)) && AcquireTarget())
            {
                if (OnActivated(actionResult, dt))
                {
                    if (actionResult.ResetDelay)
                    {
                        delay.Empty();
                    }
                    if (actionResult.ApplyCosts)
                    {
                        source.ShipState.Change(cost);
                    }
                    if (actionResult.PlaySound)
                    {
                        actionSounds.Activated.Play();
                    }
                    if (costs.RunningCost != null)
                    {
                        activated = true;
                    }
                }
                return;
            }
            else if (activated && costs.DeActivationCost != null && source.ShipState.MeetsCost(cost = (-costs.DeActivationCost)) && AcquireTarget())
            {
                if (OnDeActivated(actionResult, dt))
                {
                    if (actionResult.ApplyCosts)
                    {
                        actionSounds.DeActivated.Play();
                    }
                    if (actionResult.PlaySound)
                    {
                        source.ShipState.Change(cost);
                    }
                }
                activated = false;
                return;
            }
            activated = false;
        }