/// <summary>
        /// The constructor is private: loading screens should
        /// be activated via the static Load method instead.
        /// </summary>
        private LoadingScreen(
            ScreenManager screenManager,
            bool loadingIsSlow,
            params GameScreen[] screensToLoad)
        {
            this.loadingIsSlow = loadingIsSlow;
            this.screensToLoad = screensToLoad;

            TransitionOnTime = TimeSpan.FromSeconds(0.5);
        }
        /// <summary>
        /// Activates the loading screen.
        /// </summary>
        public static void Load(
            ScreenManager screenManager,
            bool loadingIsSlow,
            PlayerIndex? controllingPlayer,
            params GameScreen[] screensToLoad)
        {
            //Tell all the screens to transition off.
            foreach (GameScreen screen in screenManager.GetScreens())
                screen.ExitScreen();

            //Create and activate the loading screen.
            LoadingScreen loadingScreen = new LoadingScreen(
                screenManager, loadingIsSlow, screensToLoad);

            screenManager.AddScreen(loadingScreen, controllingPlayer);
        }
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            #if WINDOWS
            this.IsMouseVisible = true;
            #endif

            screenManager = new ScreenManager(this);
            ScreenHelper.Initialize(graphics, GraphicsDevice);
            ConvertUnits.SetDisplayUnitToSimUnitRatio(24f);
            Components.Add(screenManager);

            base.Initialize();
        }