示例#1
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(InputState input)
 {
 }
        /// <summary>
        /// Responds to user input, accepting or cancelling the message box.
        /// </summary>
        public override void HandleInput(InputState input)
        {
            PlayerIndex playerIndex;

            // We pass in our ControllingPlayer, which may either be null (to
            // accept input from any player) or a specific index. If we pass a null
            // controlling player, the InputState helper returns to us which player
            // actually provided the input. We pass that through to our Accepted and
            // Cancelled events, so they can tell which player triggered them.
            if (input.IsMenuSelect(ControllingPlayer, out playerIndex))
            {
                // Raise the accepted event, then exit the message box.
                if (Accepted != null)
                    Accepted(this, new PlayerIndexEventArgs(playerIndex));

                ExitScreen();
            }
            else if (input.IsMenuCancel(ControllingPlayer, out playerIndex))
            {
                // Raise the cancelled event, then exit the message box.
                if (Cancelled != null)
                    Cancelled(this, new PlayerIndexEventArgs(playerIndex));

                ExitScreen();
            }
        }
示例#3
0
        /// <summary>
        /// Lets the game respond to player input. Unlike the Update method,
        /// this will only be called when the gameplay screen is active.
        /// </summary>
        public override void HandleInput(InputState input)
        {
            if (input == null)
                throw new ArgumentNullException("input");
            PlayerIndex player;

            if (input.IsNewButtonPress(Buttons.Back, ControllingPlayer, out player))
            {
                LoadingScreen.Load(ScreenManager, false, ControllingPlayer, new BackgroundScreen(), new MainMenuScreen());
            }

            //To read multitouch data from the touch input device you can do the following:
            // Process touch events
            TouchCollection touchColl = TouchPanel.GetState();
            foreach (TouchLocation t in touchColl)
            {
                if ((t.State == TouchLocationState.Released) || (t.State == TouchLocationState.Moved))
                {
                    //You can check the coordinates of each point (and the previous coordinate TryGetPreviousLocation())
                    float xcoordiante = t.Position.X;
                    float ycoordiante = t.Position.Y;

                    Point tapLocation = new Point((int)xcoordiante, (int)ycoordiante);

                    // iterate the entries to see if any were tapped
                    for (int i = 0; i < buttons.Count; i++)
                    {
                        Button button = buttons[i];

                        if (GetButtonHitBounds(button).Contains(tapLocation))
                        {
                                OnSelectEntry(i, PlayerIndex.One);
                        }
                    }
                }
            }

            //look for any taps that occurred and select any entries that were tapped
            //foreach (GestureSample gesture in input.Gestures)
            //{
            //    if (gesture.GestureType == GestureType.Tap)
            //    {
            //        // convert the position to a Point that we can test against a Rectangle
            //        Point tapLocation = new Point((int)gesture.Position.X, (int)gesture.Position.Y);
            //        // iterate the entries to see if any were tapped
            //        for (int i = 0; i < buttons.Count; i++)
            //        {
            //            Button button = buttons[i];
            //            if (GetButtonHitBounds(button).Contains(tapLocation))
            //            {
            //                OnSelectEntry(i, PlayerIndex.One);
            //            }
            //        }
            //    }
            //}
        }
示例#4
0
        /// <summary>
        /// Responds to user input, changing the selected entry and accepting
        /// or cancelling the menu.
        /// </summary>
        public override void HandleInput(InputState input)
        {
            // we cancel the current menu screen if the user presses the back button
            PlayerIndex player;
            if (input.IsNewButtonPress(Buttons.Back, ControllingPlayer, out player))
            {
                OnCancel(player);
            }

            // look for any taps that occurred and select any entries that were tapped
            foreach (GestureSample gesture in input.Gestures)
            {
                if (gesture.GestureType == GestureType.Tap)
                {
                    // convert the position to a Point that we can test against a Rectangle
                    Point tapLocation = new Point((int)gesture.Position.X, (int)gesture.Position.Y);

                    // iterate the entries to see if any were tapped
                    for (int i = 0; i < menuEntries.Count; i++)
                    {
                        MenuEntry menuEntry = menuEntries[i];

                        if (GetMenuEntryHitBounds(menuEntry).Contains(tapLocation))
                        {
                            // select the entry. since gestures are only available on Windows Phone,
                            // we can safely pass PlayerIndex.One to all entries since there is only
                            // one player on Windows Phone.
                            OnSelectEntry(i, PlayerIndex.One);
                        }
                    }
                }
            }
        }