예제 #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
 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;
     }
 }
예제 #3
0
        /// <summary>
        /// Constructs a new screen manager component.
        /// </summary>
        public ScreenManager( Game game )
            : 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;
            _xnaContentManager = game.Content;
            _xnaContentManager.RootDirectory = "Content";
            _input = new InputHelper( this );

            _screens = new List<GameScreen>();
            _screensToUpdate = new List<GameScreen>();
            _transitions = new List<RenderTarget2D>();
        }
예제 #4
0
 /// <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 )
 {
 }
예제 #5
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 );
            }
        }