private void LoadExplosionImage(Explosion explosion) { if (explosion.Image == null) { explosion.LoadImage(this.Explosion[0]); } }
private void CheckForProjectileHits() { foreach (var projectile in this.Projectiles) { if (this.Player.Intersects(projectile.Bounds)) { if (projectile is Arrow) { this.Player.RespondToAttack(projectile.Damage); projectile.IsAlive = false; continue; } } foreach (var enemy in this.Enemies) { if (enemy.Intersects(projectile.Bounds)) { if (projectile is Fireball) { Explosion explosion; if (projectile.Direction == Direction.Right) { explosion = new Explosion((int)projectile.Position.X + projectile.Width, (int)projectile.Position.Y - projectile.Height, projectile.Damage); } else { explosion = new Explosion((int)projectile.Position.X - projectile.Width , (int)projectile.Position.Y - projectile.Height, projectile.Damage); } projectile.IsAlive = false; this.Explosions.Add(explosion); this.LoadExplosionImage(explosion); } else if (enemy.Intersects(projectile.Bounds) && projectile is Arrow == false) { enemy.RespondToAttack(projectile.Damage); this.OrcHurt.Play(); projectile.IsAlive = false; } } } } }