public void CheckHit(Projectile p) { foreach (Water w in Waters) { if (w.bounds.Contains(Helper.VtoP(p.Position))) { if (p.Position.Y > w.bounds.Top && p.Position.Y < w.bounds.Top + 15) { AudioController.PlaySFX("splash", 0.2f, 0f, 0.1f, p.Position); w.Splash(p.Position.X, 50); } p.Active = false; } } }
void ExplodeGrenade(Projectile p, bool hurtsEnemies) { p.Active = false; p.alpha = 0; p.Life = 0; for (float r = 0; r < 200; r += 20f) { for (float circ = 0; circ < MathHelper.TwoPi; circ += 0.25f) { Vector2 checkPos = p.Position + Helper.AngleToVector(circ, r); Vector2 speed = (p.Position - checkPos); speed.Normalize(); if(!hurtsEnemies) GameManager.Hero.CheckHit(checkPos, speed * 2f, ProjectileType.Grenade, true); if(hurtsEnemies) foreach (Enemy e in GameManager.EnemyController.Enemies) e.CheckHit(checkPos, speed); } } GameManager.ParticleController.AddExplosion(p.Position); AudioController.PlaySFX("explode", 0.9f, -0.5f, 0f, p.Position); if (hurtsEnemies) GameManager.HUD.AddScore(ScorePartType.Grenade); }