Exemplo n.º 1
0
        public override void OnGamePadChange(GamePadChangeEventArgs args)
        {
            var newCursorPos = Vector2.Zero;

            var playerIndexes = Enum.GetValues(typeof(PlayerIndex)).Cast <PlayerIndex>();

            foreach (var playerIndex in playerIndexes)
            {
                var comparison = args.StateComparisions[playerIndex];

                GamePadButtonStateComparision buttonState;
                if (comparison.ButtonComparisions.TryGetValue(Buttons.RightStick, out buttonState) && buttonState.Changed)
                {
                    var stickPos = Game.InputState.CurrentState.GamePad[playerIndex].ThumbSticks.Right;
                    newCursorPos.X += stickPos.X;
                    newCursorPos.Y -= stickPos.Y;
                    args.Handled    = true;
                }
            }

            cursorPos = newCursorPos;


            // ignore Back button for close
            //base.OnGamePadChange(args);
        }
Exemplo n.º 2
0
        public override void OnGamePadChange(GamePadChangeEventArgs args)
        {
            var playerIndexes = Enum.GetValues(typeof(PlayerIndex)).Cast <PlayerIndex>();

            foreach (var playerIndex in playerIndexes)
            {
                var comparison = args.StateComparisions[playerIndex];

                GamePadButtonStateComparision buttonState;
                if (comparison.ButtonComparisions.TryGetValue(Buttons.DPadUp, out buttonState) && buttonState.OldState == ButtonState.Released && buttonState.CurrentState == ButtonState.Pressed)
                {
                    var oldScrollPos = _browserForm.GetVerticalScrollPosition();
                    var scrollPos    = Math.Max(0, oldScrollPos - _scrollStrength);
                    if (oldScrollPos != scrollPos)
                    {
                        _browserForm.SetVerticalScrollPosition(scrollPos);
                    }
                    args.Handled = true;
                }
                if (comparison.ButtonComparisions.TryGetValue(Buttons.DPadDown, out buttonState) && buttonState.OldState == ButtonState.Released && buttonState.CurrentState == ButtonState.Pressed)
                {
                    var scrollPos = _browserForm.GetVerticalScrollPosition() + _scrollStrength;
                    _browserForm.SetVerticalScrollPosition(scrollPos);
                    args.Handled = true;
                    this.Log().Info("DPadDown Time unchanged: {0}", buttonState.TimeUnchanged);
                }


                if (comparison.ButtonComparisions.TryGetValue(Buttons.A, out buttonState) && buttonState.Changed)
                {
                    var cursorPos = new Vector2(
                        Game.InputState.CurrentState.Mouse.X,
                        Game.InputState.CurrentState.Mouse.Y);
                    // browser form offset

                    if (buttonState.CurrentState == ButtonState.Pressed && buttonState.OldState == ButtonState.Released)
                    {
                        Game.InvokeMouseDown(MouseButtons.Left);
                        args.Handled = true;
                    }
                    else if (buttonState.CurrentState == ButtonState.Released &&
                             buttonState.OldState == ButtonState.Pressed)
                    {
                        if (Game.InputState.OldState.Mouse.LeftButton == ButtonState.Pressed ||
                            Game.InputState.CurrentState.Mouse.LeftButton == ButtonState.Pressed)
                        {
                            Game.InvokeMouseUp(MouseButtons.Left);
                            //_browserForm.InvokeClick(cursorPos);
                            args.Handled = true;
                        }
                    }
                }
            }

            base.OnGamePadChange(args);
        }
Exemplo n.º 3
0
        private void GamePadChange_Callback(GamePadChangeEventArgs args)
        {
            if (!IsActive)
            {
                return;
            }
            foreach (var pair in args.StateComparisions)
            {
                var playerIndex = pair.Key;
                var comparison  = args.StateComparisions[playerIndex];
                foreach (var s in comparison.ButtonComparisions.Select(x => x.Value))
                {
                    if (!s.Changed)
                    {
                        continue;
                    }
                    Debug(string.Format("GamePadChange_Callback() Player:{3}, Button:{0}, Old:{1}, New:{2}", s.Button, s.OldState, s.CurrentState, s.Player));


                    if (s.Button == Buttons.LeftStick)
                    {
                        AppendNewMouseVelocity(s, Vector2.Zero);
                    }

                    if (s.Button == Buttons.A && s.Changed)
                    {
                        if (s.CurrentState == ButtonState.Pressed && s.OldState == ButtonState.Released)
                        {
                            this.InvokeMouseDown(MouseButtons.Left);
                        }
                        else if (s.CurrentState == ButtonState.Released &&
                                 s.OldState == ButtonState.Pressed)
                        {
                            if (InputState.OldState.Mouse.LeftButton == ButtonState.Pressed ||
                                InputState.CurrentState.Mouse.LeftButton == ButtonState.Pressed)
                            {
                                this.InvokeMouseUp(MouseButtons.Left);
                            }
                        }
                    }
                }
            }

            ScreenManager._InvokeGamePadChange(args);
        }
Exemplo n.º 4
0
        public virtual void OnGamePadChange(GamePadChangeEventArgs args)
        {
            var playerIndexes = Enum.GetValues(typeof(PlayerIndex)).Cast <PlayerIndex>();

            foreach (var playerIndex in playerIndexes)
            {
                var comparison        = args.StateComparisions[playerIndex];
                var buttonComparisons = comparison.ButtonComparisions;

                GamePadButtonStateComparision buttonState;
                if (buttonComparisons.TryGetValue(Buttons.Back, out buttonState) && buttonState.OldState == ButtonState.Released && buttonState.CurrentState == ButtonState.Pressed)
                {
                    ExitScreen();
                    args.Handled = true;
                    // todo: Handled for each button change
                }
            }
        }
Exemplo n.º 5
0
        internal void _InvokeGamePadChange(GamePadChangeEventArgs args)
        {
            var screens = GetScreens().ToList();

            screens = screens.Where(x => x.ScreenState == ScreenState.Active).ToList();
            //if (!inherit)
            //    screens = screens.Where(x => x.IsActive).ToList();

            screens.Reverse();
            foreach (var screen in screens)
            {
                if (args.Handled)
                {
                    break;
                }
                screen._InvokeGamePadChange(args);
                //break;      // only focused screen should recieve input
            }
        }
Exemplo n.º 6
0
        public override void OnGamePadChange(GamePadChangeEventArgs args)
        {
            var playerIndexes = Enum.GetValues(typeof(PlayerIndex)).Cast <PlayerIndex>();

            foreach (var playerIndex in playerIndexes)
            {
                var comparison = args.StateComparisions[playerIndex];

                // todo: support holding down the button for X milliseconds

                GamePadButtonStateComparision buttonState;
                if (comparison.ButtonComparisions.TryGetValue(Buttons.DPadLeft, out buttonState) && buttonState.OldState == ButtonState.Released && buttonState.CurrentState == ButtonState.Pressed)
                {
                    SelectLeft();
                    args.Handled = true;
                }
                if (comparison.ButtonComparisions.TryGetValue(Buttons.DPadRight, out buttonState) && buttonState.OldState == ButtonState.Released && buttonState.CurrentState == ButtonState.Pressed)
                {
                    SelectRight();
                    args.Handled = true;
                }
                if (comparison.ButtonComparisions.TryGetValue(Buttons.A, out buttonState) && buttonState.OldState == ButtonState.Released && buttonState.CurrentState == ButtonState.Pressed)
                {
                    if (_hoveredItemSprite != null)
                    {
                        OpenItem(_hoveredItemSprite);
                    }
                    else
                    {
                        OpenItem(_focusedItemSprite);
                    }
                    args.Handled = true;
                }
            }

            base.OnGamePadChange(args);
        }
Exemplo n.º 7
0
 internal void _InvokeGamePadChange(GamePadChangeEventArgs args)
 {
     OnGamePadChange(args);
 }