/// <summary> /// This is called when the game should draw itself. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.White); switch (currentState) { case GameState.Splash: splashScreen.Draw(spriteBatch); break; case GameState.Menu: menuManager.DrawMenuScreen(spriteBatch); break; case GameState.Playing: // Background spriteBatch.Begin(); spriteBatch.Draw(back, nullPosition, Color.White); spriteBatch.End(); // Player,Crates etc. spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null, null, camera.Transform); crateManager.Draw(spriteBatch); map.Draw(spriteBatch); player.Draw(spriteBatch); if (player.Position.X > 200 && player.Position.X < 250) { spriteBatch.Draw(speechBubble, player.Position + new Vector2(-30, -100), Color.White); } spriteBatch.Draw(cloud, cloudpos, Color.White); spriteBatch.End(); // HUD hud.Draw(spriteBatch); break; case GameState.Pause: menuManager.DrawPauseScreen(spriteBatch); break; } base.Draw(gameTime); }