public void Drop(int dropUntil) { dropUntilY = dropUntil; if (state == FireBallState.Normal) { state = FireBallState.Falling; } }
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; }
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; } } }
private void DoBlow() { blowSound.Play(0); state = FireBallState.Blowing; }