private void HandleInput(GameTime gameTime) { var rand = new Random(); SkillRate += gameTime.ElapsedGameTime; var padState = GamePad.GetState(PadIndex); if (padState.ThumbSticks.Right !=Vector2.Zero && Energy >= 10 && SkillRate > FireballRate) { SkillRate = TimeSpan.Zero; Energy -= 10; var direction = Vector2.Normalize(padState.ThumbSticks.Right); direction.Y = -direction.Y; var fireEventArgs = new GunnerFireEventArgs (direction); var firePitch = MathHelper.Lerp ((float)Moxy.Random.NextDouble(), -0.5f, 0.6f); var fireVolume = MathHelper.Lerp ((float)Moxy.Random.NextDouble (), 0.7f, 0.8f); fireSound.Play (fireVolume, firePitch, 0f); if (OnCastFireball != null) OnCastFireball(this, fireEventArgs); //if (!fireEventArgs.Handled) //fireballEmitter.GenerateParticles(gameTime, direction); } }
void Target_OnCastFireball(object sender, GunnerFireEventArgs e) { var rads = Math.Atan2(e.FireVector.Y, e.FireVector.X); var second = new Vector2((float)Math.Cos(rads + MathHelper.PiOver4/3), (float)Math.Sin(rads + MathHelper.PiOver4/3)); var third = new Vector2((float)Math.Cos(rads - MathHelper.PiOver4/3), (float)Math.Sin(rads - MathHelper.PiOver4/3)); e.Handled = true; Target.FireballEmitter.GenerateParticles(Moxy.GameTime, e.FireVector); Target.FireballEmitter.GenerateParticles(Moxy.GameTime, second); Target.FireballEmitter.GenerateParticles(Moxy.GameTime, third); }