/// <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 (); } }
/// <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 ); } }