/// <summary> /// Draws the message box. /// </summary> public override void Draw(GameTime gameTime) { // Darken down any other screens that were drawn beneath the popup. ScreenManager.FadeBackBufferToBlack(TransitionAlpha * 2 / 3); // Center the message text in the viewport. Viewport viewport = ScreenManager.GraphicsDevice.Viewport; Vector2 viewportSize = new Vector2(viewport.Width, viewport.Height); Vector2 textSize = ScreenManager.Font.MeasureString(message); Vector2 textPosition = (viewportSize - textSize) / 2; Vector2 usageTextSize = smallFont.MeasureString(usageText); Vector2 usageTextPosition = (viewportSize - usageTextSize) / 2; usageTextPosition.Y = textPosition.Y + ScreenManager.Font.LineSpacing * 1.1f; // Fade the popup alpha during transitions. Color color = new Color(255, 255, 255, TransitionAlpha); // Draw the background rectangles Rectangle rect = new Rectangle( (int)(Math.Min(usageTextPosition.X, textPosition.X)), (int)(textPosition.Y), (int)(Math.Max(usageTextSize.X, textSize.X)), (int)(ScreenManager.Font.LineSpacing * 1.1f + usageTextSize.Y) ); rect.X -= (int)(0.1f * rect.Width); rect.Y -= (int)(0.1f * rect.Height); rect.Width += (int)(0.2f * rect.Width); rect.Height += (int)(0.2f * rect.Height); Rectangle rect2 = new Rectangle(rect.X - 1, rect.Y - 1, rect.Width + 2, rect.Height + 2); ScreenManager.DrawRectangle(rect2, new Color(128, 128, 128, (byte)(192.0f * (float)TransitionAlpha / 255.0f))); ScreenManager.DrawRectangle(rect, new Color(0, 0, 0, (byte)(232.0f * (float)TransitionAlpha / 255.0f))); // Draw the message box text. ScreenManager.SpriteBatch.Begin(); ScreenManager.SpriteBatch.DrawString(ScreenManager.Font, message, textPosition, color); ScreenManager.SpriteBatch.DrawString(smallFont, usageText, usageTextPosition, color); ScreenManager.SpriteBatch.End(); }