protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.Black); UIScaleMatrix = Matrix.CreateScale(UIScale); switch (gameMode) { case GameMode.MainMenu: { spriteBatch.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp, null, null, null, UIScaleMatrix); mainMenu.DrawSelf(spriteBatch); spriteBatch.End(); break; } case GameMode.InGame: { // Apply Zoom InGameMatrix = Matrix.CreateScale(GameScale); // Apply Translation InGameMatrix = Camera.Translate(InGameMatrix); spriteBatch.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp, null, null, null, Matrix.CreateScale(2)); //spriteBatch.Draw(background, ViewPort.Bounds, Color.White); spriteBatch.End(); spriteBatch.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp, null, null, null, InGameMatrix); // Draw Tiles before player to not cover him level.Draw(spriteBatch); player.Draw(spriteBatch); spriteBatch.End(); //Test state for Debug Info if (UIActive) { spriteBatch.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp, null, null, null, UIScaleMatrix); testState.DrawSelf(spriteBatch); spriteBatch.End(); } break; } case GameMode.DeathScreen: { spriteBatch.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp, null, null, null, UIScaleMatrix); deathState.DrawSelf(spriteBatch); spriteBatch.End(); break; } default: throw new Exception("Tried to update Invalid GameMode"); } if (MouseText != null) { spriteBatch.DrawString(font, MouseText, Input.mouse.Position.ToVector2() + new Vector2(10), Color.White); MouseText = null; } base.Draw(gameTime); }