Пример #1
0
        /// <summary>
        /// Draws the menu entry. This can be overridden to customize the appearance.
        /// </summary>
        public virtual void Draw( MenuScreen screen, Vector2 position,
            bool isSelected, GameTime gameTime)
        {
            // Draw the selected entry in yellow, otherwise white.
              Color color = isSelected ? Color.Yellow : Color.White;

              // Pulsate the size of the selected menu entry.
              double time = gameTime.TotalGameTime.TotalSeconds;

              float pulsate = (float)Math.Sin( time * 6 ) + 1;

              float scale = 1 + pulsate * 0.05f * selectionFade;

              // Modify the alpha to fade text out during transitions.
              color = new Color( color.R, color.G, color.B, screen.TransitionAlpha );

              // Draw text, centered on the middle of each line.
              ScreenManager screenManager = screen.ScreenManager;
              SpriteBatch spriteBatch = screenManager.SpriteBatch;
              SpriteFont font = screenManager.Font;

              Vector2 origin = new Vector2( 0, font.LineSpacing / 2 );

              spriteBatch.DrawString( font, text, position, color, 0,
                             origin, scale, SpriteEffects.None, 0 );
        }
Пример #2
0
        /// <summary>
        /// Updates the menu entry.
        /// </summary>
        public virtual void Update( MenuScreen screen, bool isSelected,
            GameTime gameTime)
        {
            // When the menu selection changes, entries gradually fade between
              // their selected and deselected appearance, rather than instantly
              // popping to the new state.
              float fadeSpeed = (float)gameTime.ElapsedGameTime.TotalSeconds * 4;

              if ( isSelected )
            selectionFade = Math.Min( selectionFade + fadeSpeed, 1 );
              else
            selectionFade = Math.Max( selectionFade - fadeSpeed, 0 );
        }
Пример #3
0
 /// <summary>
 /// Queries how much space this menu entry requires.
 /// </summary>
 public virtual int GetHeight( MenuScreen screen )
 {
     return screen.ScreenManager.Font.LineSpacing;
 }