public void CheckAsteroidCollision(SunManager sunManager, Viewport viewport, Asteroid asteroid, ScoreManager scoreManager, PlanetManager planetManager, AudioManager audioManager) { if (asteroid.type == "RedMeteor") { bool didAsteroidCollideTheSun = asteroid.GetCircle().Intersects(sunManager.GetFirstObjectCircle()); if (didAsteroidCollideTheSun) { ResetAndRandomlyGenerateAsteroid(viewport, asteroid); scoreManager.DecreaseSunHealth(); } // Planet collision logic bool didAsteroidCollideThePlanets = planetManager.CheckPlanetCollision(asteroid, scoreManager); if (didAsteroidCollideThePlanets) { audioManager.playDecreaseSound(); ResetAndRandomlyGenerateAsteroid(viewport, asteroid); } } else if (asteroid.type == "BlueMeteor") { // Do planet collision logic here bool didAsteroidCollideThePlanets = planetManager.CheckPlanetCollision(asteroid, scoreManager); if (didAsteroidCollideThePlanets) { audioManager.playIncreaseSound(); // Remove the asteroid from the screen asteroid.sprite.position = new Vector2(3000, 3000); } //int maxEscapeDistance = (viewport.Width / 2) + 500; //float meteorDistance = Vector2.Distance(asteroid.sprite.position, new Vector2(viewport.Width/2, viewport.Height/2)); //if (meteorDistance > maxEscapeDistance) { // ResetAndRandomlyGenerateAsteroid(viewport, asteroid); //} } }
public void Update(GameTime gameTime, GraphicsDevice graphicsDevice, SunManager sunManager, ScoreManager scoreManager, PlanetManager planetManager, AudioManager audioManager) { foreach (Asteroid asteroid in asteroidCollection) { asteroid.Update(gameTime, graphicsDevice, sunManager); CheckAsteroidCollision(sunManager, graphicsDevice.Viewport, asteroid, scoreManager, planetManager, audioManager); RestartBlueAsteroid(asteroid, gameTime, graphicsDevice.Viewport); } }