/// <summary> /// Draws the loading screen. /// </summary> public override void Draw(GameTime gameTime) { // If we are the only active screen, that means all the previous screens // must have finished transitioning off. We check for this in the Draw // method, rather than in Update, because it isn't enough just for the // screens to be gone: in order for the transition to look good we must // have actually drawn a frame without them before we perform the load. if ((ScreenState == ScreenState.Active) && (ScreenManager.GetScreens().Length == 1)) { _otherScreensAreGone = true; } // The gameplay screen takes a while to load, so we display a loading // message while that is going on, but the menus load very quickly, and // it would look silly if we flashed this up for just a fraction of a // second while returning from the game to the menus. This parameter // tells us how long the loading is going to take, so we know whether // to bother drawing the message. if (_loadingIsSlow) { SpriteBatch spriteBatch = ScreenManager.SpriteBatch; spriteBatch.Begin(); #if IPHONE var screenSize = new Vector2(ScreenManager.Graphics.PreferredBackBufferWidth, ScreenManager.Graphics.PreferredBackBufferHeight); #else var screenSize = new Vector2(ScreenManager.GraphicsDevice.Viewport.Width, ScreenManager.GraphicsDevice.Viewport.Height); #endif if (_background != null) { spriteBatch.Draw(_background, screenSize / 2, null, Color.White, 0, new Vector2(_background.Width, _background.Height) / 2, 1, SpriteEffects.None, 0); } if (_showText) { SpriteFont font = ScreenManager.Font; const string message = "Loading..."; // Center the text in the screen. Vector2 textSize = font.MeasureString(message); Vector2 textPosition = (screenSize - textSize) / 2; #if SILVERLIGHT var color = new Color(Color.White, MathHelper.Clamp(TransitionAlpha, 0, 1)); #else var color = Color.White * TransitionAlpha; #endif // Draw the text. spriteBatch.DrawString(font, message, textPosition, color); } spriteBatch.End(); // Fix for Silversprite spriteBatch.Begin(); spriteBatch.End(); if (_fadeBackBufferToWhiteAlpha > 0) { ScreenManager.FadeBackBufferToWhite(_fadeBackBufferToWhiteAlpha); } } }