override public bool CollidesWith(Entity e) { if (Intersects(e)) { active = false; // the asteroid gets destroyed Explosion.Spawn(Astro.Instance.animations["explosion_asteroid"], x, y); if (anim.r > 30) { Astro.Instance.score += 10; Astro.Instance.sounds["bang_lg"].Play(); Spawn(Astro.Instance.animations["asteroid_md"], x, y); Spawn(Astro.Instance.animations["asteroid_md"], x, y); } else if (anim.r > 20) { Astro.Instance.score += 20; Astro.Instance.sounds["bang_md"].Play(); Spawn(Astro.Instance.animations["asteroid_sm"], x, y); Spawn(Astro.Instance.animations["asteroid_sm"], x, y); } else { Astro.Instance.score += 30; Astro.Instance.sounds["bang_sm"].Play(); } return(true); } return(false); }
override public bool CollidesWith(Entity e) { if (!hidden && Intersects(e)) { Astro.Instance.score += 50; Explosion.Spawn(Astro.Instance.animations["explosion_ship"], x, y); Astro.Instance.sounds["bang_lg"].Play(); Hide(); return(true); } return(false); }
override public void CheckCollisions() { foreach (Entity e in Astro.Instance.currentEntities) { if (e.CollidesWith(this)) { Explosion.Spawn(Astro.Instance.animations["explosion_ship"], x, y); Astro.Instance.sounds["bang_lg"].Play(); x = Astro.Instance.WIDTH * 0.5; // reset the ship to the center of the screen y = Astro.Instance.HEIGHT * 0.5; dx = dy = 0; // stop the ship's movement if (--extraShips < 0) { Astro.Instance.saucer.Hide(); Astro.Instance.gameState = (Astro.Instance.score > HighScores.Instance.lowestHighScore) ? Astro.GameState.GAMEOVER : // prompt for player's name Astro.GameState.READY; // show high scores } } } }