示例#1
0
 public void Drop(int dropUntil)
 {
     dropUntilY = dropUntil;
     if (state == FireBallState.Normal)
     {
         state = FireBallState.Falling;
     }
 }
示例#2
0
 public FireBall(
     Vector2 position,
     Vector2 size,
     float directionAngle,
     float lifeTimeMilliseconds,
     IMapObject target,
     Animation movingAnimation, Animation blowingAnimation, ISound blowSound) : base(position, size, directionAngle)
 {
     this.lifeTimeMilliseconds = lifeTimeMilliseconds;
     Target = target;
     this.movingAnimation  = movingAnimation;
     this.blowingAnimation = blowingAnimation;
     this.blowSound        = blowSound;
     state = FireBallState.PlayerFollowing;
 }
示例#3
0
        private void Update(float deltaT, ref Particle particle)
        {
            if (state == FireBallState.Normal)
            {
                MouseState mouse = Mouse.GetState();
                Emitter = new Vector2(mouse.X, mouse.Y);
            }

            if (state == FireBallState.Falling)
            {
                float y = Emitter.Y;
                y         += deltaT * fallSpeed;
                fallSpeed += deltaT * fallAcceleration;
                Emitter    = new Vector2(Emitter.X, y);

                // Check for collision with floor/bottom of screen.
                if (Emitter.Y >= dropUntilY)
                {
                    // Initialize explode state.
                    state         = FireBallState.Explode;
                    explosionLife = 20.0f;
                }
            }


            particle.Velocity += deltaT * particle.Acceleration;
            particle.Position += deltaT * particle.Velocity;

            if (!(state == FireBallState.Explode))
            {
                particle.Scale -= deltaT;
                particle.Life  -= deltaT;
            }



            if (state == FireBallState.Explode)
            {
                explosionLife -= deltaT;


                if (explosionLife <= 0.0f)
                {
                    state         = FireBallState.Normal;
                    explosionLife = 4.0f;
                }
            }
        }
示例#4
0
 private void DoBlow()
 {
     blowSound.Play(0);
     state = FireBallState.Blowing;
 }