/*
         * *******************************
         * Constructors
         * *******************************
         */
        public ScreenPause(GameMain gameMain, ScreenPlay currentPlayScreenState)
            : base(gameMain,
            "sprites/playscreen_background",
            false,
            "audio/pausescreen_background_music",
            true)
        {
            this.mCurrentPlayScreenState = currentPlayScreenState;

            // define total options
            mOptionsText = new String[2];
            mOptionsPosition = new Vector2[2];

            // set options text
            mOptionsText[0] = "Continue";
            mOptionsText[1] = "Back to Main Menu";

            // set options position
            Vector2 optionfontDimensions = NormalFont.MeasureString(mOptionsText[0]);
            float fontHeight = optionfontDimensions.Y;

            mOptionsPosition[0] = new Vector2((GameMain.SCREEN_WIDTH / 2) - (optionfontDimensions.X), (GameMain.SCREEN_HEIGHT / 2) - (fontHeight));
            mOptionsPosition[1] =
                new Vector2(
                    (GameMain.SCREEN_WIDTH / 2) - (optionfontDimensions.X),
                    (mOptionsPosition[0].Y) + (fontHeight)
               );

            base.initialiseOptions();
        }
 /// <summary>
 /// The main entry point for the application.
 /// </summary>
 static void Main(string[] args)
 {
     using (GameMain game = new GameMain())
     {
         game.Run();
     }
 }
        /*
         * *******************************
         * Constructors
         * *******************************
         */
        protected BaseGame(GameMain gameMain)
        {
            mGameMain = gameMain;
            mContent = gameMain.Content;
            mHelperScreen = gameMain.HelperScreen;

            mHelperBackgroundTexture = new HelperBackgroundTexture(gameMain.Content);
            mHelperMusic = new HelperMusic(gameMain.Content);

            setCommonUi();
        }
        /*
         * *******************************
         * Constructors
         * *******************************
         */
        public ScreenPlay(GameMain gameMain)
            : base(gameMain)
        {
            //SoundEffect.MasterVolume = 0.5f;

            setTextures();
            base.HelperMusic.setBackgroundMusic("audio/playscreen_background_music");
            base.HelperBackgroundTexture.setBackgroundTexture("sprites/playscreen_background", true);

            createBalloons();
            base.HelperMusic.playBackgroundMusic(true, 0.3f);

            isFromAnotherScreen = true;
        }
        /*
         * *******************************
         * Variables
         * *******************************
         */
        /*
         * *******************************
         * Constructors
         * *******************************
         */
        public ScreenTitle(GameMain gameMain)
            : base(gameMain,
                "sprites/playscreen_background",
                false,
                "audio/playscreen_background_music",
                true)
        {
            // define total options
            mOptionsText = new String[4];
            mOptionsPosition = new Vector2[4];

            // set options text
            mOptionsText[0] = "Play";
            mOptionsText[1] = "Settings";
            mOptionsText[2] = "Help";
            mOptionsText[3] = "Exit";

            // set options position
            Vector2 optionfontDimensions = NormalFont.MeasureString(mOptionsText[0]);
            float fontHeight = optionfontDimensions.Y;

            mOptionsPosition[0] = new Vector2((GameMain.SCREEN_WIDTH / 2) - (optionfontDimensions.X), (GameMain.SCREEN_HEIGHT / 2) - (fontHeight));

            mOptionsPosition[1] =
                new Vector2(
                    (GameMain.SCREEN_WIDTH / 2) - (optionfontDimensions.X),
                    (mOptionsPosition[0].Y) + (fontHeight)
               );

            mOptionsPosition[2] =
                new Vector2(
                    (GameMain.SCREEN_WIDTH / 2) - (optionfontDimensions.X),
                    (mOptionsPosition[1].Y) + (fontHeight)
               );

            mOptionsPosition[3] =
                new Vector2(
                    (GameMain.SCREEN_WIDTH / 2) - (optionfontDimensions.X),
                    (mOptionsPosition[2].Y) + (fontHeight)
               );

            base.initialiseOptions();
        }
        /*
         * *******************************
         * Constructors
         * *******************************
         */
        /// <summary>
        /// Base class for all menu screens.
        /// - Use the mOptionsText[] and the mOptionsPosition[] arrays to defines the menu options text and position.
        /// - Call "initialiseOptions" method after options text and positions have been set 
        /// - Override "optionSelectAction" method to define unique actions for when an option is clicked, use the mOptionsBody[]
        /// array to get the collision for each option
        /// </summary>
        /// <param name="gameMain"></param> 
        /// <param name="backgroundTexturePath"></param> give null for no bacground texture
        /// <param name="backgroundMoving"></param> //true for a moving background
        /// <param name="backgroundMusicPath"></param> give null for no sound
        public BaseScreenMenu(
            GameMain gameMain,
            String backgroundTexturePath,
            bool backgroundMoving,
            String backgroundMusicPath,
            bool backgroundMusicRepeat
            )
            : base(gameMain)
        {
            if (backgroundTexturePath != null) {
                base.HelperBackgroundTexture.setBackgroundTexture(backgroundTexturePath, backgroundMoving);
            }

            if (backgroundMusicPath != null)
            {
                base.HelperMusic.setBackgroundMusic(backgroundMusicPath);
                base.HelperMusic.playBackgroundMusic(backgroundMusicRepeat, 0.3f);
            }
        }