/// <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.Black);

            if (currentGameState == GameState.PLAY)
            {
                IsMouseVisible = false;
                // draw objects
                //spriteBatch.Begin();
                spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null,
                                  null, null, camera.transform);
                //testExMap.Draw(spriteBatch);
                base.Draw(gameTime);

                spriteBatch.End();
            }

            if (currentGameState == GameState.START)
            {
                //spriteBatch.Begin();
                splashScreen.Draw(gameTime);
                //spriteBatch.End();
            }

            if (currentGameState == GameState.MENU)
            {
                menuScreen.Draw(gameTime);
                IsMouseVisible = true;
            }

            if (currentGameState == GameState.PAUSE)
            {
                pauseScreen.Draw(gameTime);
            }

            if (currentGameState == GameState.WIN || currentGameState == GameState.LOSE)
            {
                endScreen.Draw(gameTime);
            }

            if (currentGameState == GameState.TUT)
            {
                tutScreen.Draw(gameTime);
            }

            //draw hud
            if (currentGameState == GameState.PLAY)
            {
                elements.Draw(spriteBatch);

                spriteBatch.Begin();
                if (objShow)
                {
                    if (gameObj == Objective.Scientist)
                    {
                        spriteBatch.DrawString(objFont, "objective: find the scientist",
                                               new Vector2(32, 32), Color.Black);
                    }
                    if (gameObj == Objective.Scientist2)
                    {
                        spriteBatch.DrawString(objFont, "objective: get back to the scientist",
                                               new Vector2(32, 32), Color.Black);
                    }
                    if (gameObj == Objective.Cure)
                    {
                        spriteBatch.DrawString(objFont, "objective: find the cure",
                                               new Vector2(32, 32), Color.Black);
                    }
                    if (gameObj == Objective.Bomb)
                    {
                        spriteBatch.DrawString(objFont, "objective: find and arm the bomb",
                                               new Vector2(32, 32), Color.Black);
                    }
                    if (gameObj == Objective.Helicopter1 || gameObj == Objective.Helicopter2)
                    {
                        spriteBatch.DrawString(objFont, "objective: get to the helicopter",
                                               new Vector2(32, 32), Color.Black);
                    }
                    if (gameObj == Objective.Elimination)
                    {
                        spriteBatch.DrawString(objFont, "objective: eliminate " + objEliminate + " hostiles",
                                               new Vector2(32, 32), Color.Black);
                    }
                }
                spriteBatch.End();
            }
        }