public override void HandleInput(InputHelper input, GameTime gameTime) { if (input.KeyboardState.GetPressedKeys().Length > 0 || input.GamePadState.IsButtonDown(Buttons.A | Buttons.Start | Buttons.Back) || input.MouseState.LeftButton == ButtonState.Pressed) { _duration = TimeSpan.Zero; } }
/// <summary> /// Responds to user input, changing the selected entry and accepting /// or cancelling the menu. /// </summary> public override void HandleInput(InputHelper input, GameTime gameTime) { base.HandleInput(input, gameTime); if (input.IsMenuSelect() && _selectedEntry != -1) { if (_menuEntries[_selectedEntry].SettingsChange != null) { _menuEntries[_selectedEntry].ModifyOption(null); if (_menuEntries[_selectedEntry].OptionRequiresRestart) ScreenManager.AddScreen(new MessageBoxScreen("Changing this option requires you to restart the game for it to take effect.", MessageBoxViewportAlignment.Center)); } } }
/// <summary> /// Constructs a new screen manager component. /// </summary> public ScreenManager(Game game, GraphicsDeviceManager graphics) : base(game) { // we must set EnabledGestures before we can query for them, but // we don't assume the game wants to read them. TouchPanel.EnabledGestures = GestureType.None; _contentManager = game.Content; _contentManager.RootDirectory = "Content"; _input = new InputHelper(this); _screens = new List<GameScreen>(); _screensToUpdate = new List<GameScreen>(); _transitions = new List<RenderTarget2D>(); _graphics = graphics; }
/// <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); 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) { if (_menuEntries[_selectedEntry].IsGlobalExitItem()) { ScreenManager.Game.Exit(); } else if (_menuEntries[_selectedEntry].IsScreenExitItem()) { ExitScreen(); if (_menuEntries[_selectedEntry].CloseParentScreen) _activeGameScreen.ExitScreen(); } else if (_menuEntries[_selectedEntry].LinkScreen != null) { ScreenManager.AddScreen(_menuEntries[_selectedEntry].LinkScreen); if (_menuEntries[_selectedEntry].LinkScreen is IDemoScreen) { ScreenManager.AddScreen( new MessageBoxScreen((_menuEntries[_selectedEntry].LinkScreen as IDemoScreen).GetDetails(), MessageBoxViewportAlignment.Center)); } } else if (_menuEntries[_selectedEntry].SettingsChange != null) { _menuEntries[_selectedEntry].ModifyOption(null); } } else if (input.IsMenuCancel()) { this.ExitScreen(); } 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); } }
/// <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> /// Allows the screen to handle user input. Unlike Update, this method /// is only called when the screen is active, and not when some other /// screen has taken the focus. /// </summary> public virtual void HandleInput(InputHelper input, GameTime gameTime) { }