public void Update(TimeSpan t) { // Update world starField.Pan(0, StarField.StarSpeed, t); if (State == GameStateType.Playing) { Player.Update(t); } Energy.Update(t); Asteroids.Update(t); if (State == GameStateType.Playing) { Player.HandleCollisions(t); survival += t; } else { dying += t; if (dying.TotalSeconds > DyingDuration) { game.ChangeToGameOverScreen(survival); } } if (Player.Energy <= 0.0f) { State = GameStateType.Dying; } // Render world game.Screen.Clear(Palette.ClearFill); starField.Render(game.Screen); Energy.Render(game.Screen); Player.RenderPlayer(game.Screen); Asteroids.Render(game.Screen); Player.RenderEnergyBar(game.Screen); Fonts.HeavyData.Render(String.Format("SURVIVAL: {0:D2}:{1:D2}", survival.Minutes, survival.Seconds), 10, 5, 22, Palette.Energy1, game.Screen); // Fade out while dying if (State == GameStateType.Dying) { fadeRect.Opacity = dying.TotalSeconds / (double)DyingDuration; game.Screen.Render(fadeRect, fadeTransform); } game.Screen.Invalidate(); }