示例#1
1
 /// <summary>
 /// Responds to user input, accepting or cancelling the message box.
 /// </summary>
 public override void HandleInput( InputHelper input, GameTime gameTime )
 {
     if ( input.IsMenuSelect () || input.IsMenuCancel () ||
          input.IsNewMouseButtonPress ( MouseButtons.LeftButton ) ) {
         ExitScreen ();
     }
 }
示例#2
0
        /// <summary>
        /// Responds to user input, changing the selected entry and accepting
        /// or cancelling the menu.
        /// </summary>
        public override void HandleInput( InputHelper input, GameTime gameTime )
        {
            // Mouse or touch on a menu item
            int hoverIndex = GetMenuEntryAt ( input.Cursor );
            for ( int i = 0; i < _menuEntries.Count; i++ ) {
                MenuEntry item = _menuEntries [i];
                item.IsHovered = i == hoverIndex;
            }
            if ( hoverIndex > -1 && _menuEntries [hoverIndex].IsSelectable () && !_scrollLock ) {
                _selectedEntry = hoverIndex;
            }
            else {
                _selectedEntry = -1;
            }

            _scrollSlider.Hover = false;
            if ( input.IsCursorValid ) {
                _scrollUp.Collide ( input.Cursor );
                _scrollDown.Collide ( input.Cursor );
                _scrollSlider.Collide ( input.Cursor );
            }
            else {
                _scrollUp.Hover = false;
                _scrollDown.Hover = false;
                _scrollLock = false;
            }

            // Accept or cancel the menu?
            if ( input.IsMenuSelect () && _selectedEntry != -1 ) {
                MenuEntry item = _menuEntries [_selectedEntry];
                if ( item.IsExitItem () ) {
                    ScreenManager.Game.Exit ();
                }
                else if ( item.Screen != null ) {
                    if ( item.IsSelected ) {
                        item.IsSelected = false;
                        ScreenManager.AddScreen ( item.Screen );
                        if ( item.Screen is LevelBase ) {
                            ScreenManager.AddScreen (
                                new MessageBoxScreen ( ( item.Screen as LevelBase ).GetDetails () ) );
                        }
                    }
                    else {
                        item.IsSelected = true;
                    }
                }
            }
            else if ( input.IsMenuCancel () ) {
                ScreenManager.Game.Exit ();
            }

            if ( input.IsMenuPressed () ) {
                if ( _scrollUp.Hover ) {
                    _menuOffset = Math.Max ( _menuOffset - 200f * (float) gameTime.ElapsedGameTime.TotalSeconds, 0f );
                    _scrollLock = false;
                }
                if ( _scrollDown.Hover ) {
                    _menuOffset = Math.Min ( _menuOffset + 200f * (float) gameTime.ElapsedGameTime.TotalSeconds, _maxOffset );
                    _scrollLock = false;
                }
                if ( _scrollSlider.Hover ) {
                    _scrollLock = true;
                }
            }
            if ( input.IsMenuReleased () ) {
                _scrollLock = false;
            }
            if ( _scrollLock ) {
                _scrollSlider.Hover = true;
                _menuOffset = Math.Max ( Math.Min ( ( ( input.Cursor.Y - _menuBorderTop ) / ( _menuBorderBottom - _menuBorderTop ) ) * _maxOffset, _maxOffset ), 0f );
            }
        }