コード例 #1
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 WINDOWS_PHONE
            PlayerIndex player;
            if (input.IsNewButtonPress(Buttons.Back, ControllingPlayer, out player))
            {
                ScreenManager.Game.Exit();
            }
            else
            {
                if (elapsedMilliseconds < ReceiveInputTime)
                {
                    //Show the splash for a little while
                    return;
                }

                for (int i = 0; i < input.Gestures.Count; ++i)
                {
                    if (input.Gestures[i].GestureType == GestureType.Tap)
                    {
                        GotoNextScreen();
                    }
                }
            }
            #else
            if (Keyboard.GetState().IsKeyDown(Keys.Escape))
            {
                ScreenManager.Game.Exit();
            }

            if (elapsedMilliseconds < ReceiveInputTime)
            {
                //Show the splash for a little while
                return;
            }
            var keys = Keyboard.GetState().GetPressedKeys();

            bool noKeysPressed = (keys.Length == 1 && keys[0] == Keys.None) || keys.Length == 0;
            if (!noKeysPressed)
            {
                GotoNextScreen();
            }
            #endif
        }
コード例 #2
0
ファイル: WallCrashScreen.cs プロジェクト: krolth/RetroPixels
        /// <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 WINDOWS
            if (Keyboard.GetState().IsKeyDown(Keys.Escape))
            {
                LoadingScreen.Load(ScreenManager, false, ControllingPlayer, new BackgroundScreen(), new MainMenuScreen());
            }

            var mouseState = Mouse.GetState();
            //If finger touched screen for the first time
            if (mouseState.LeftButton == ButtonState.Pressed)
            {
                isMouseClicked = true;
            }
            else
            {
                lastTouch = new Vector2(mouseState.X, mouseState.Y);
            }
            #else
            PlayerIndex player;
            if (input.IsNewButtonPress(Buttons.Back, ControllingPlayer, out player))
            {
                LoadingScreen.Load(ScreenManager, false, ControllingPlayer, new BackgroundScreen(), new MainMenuScreen());
            }
            else
            {
                for (int i = 0; i < input.Gestures.Count; ++i)
                {
                    var gesture = input.Gestures[i];
                    if (gesture.GestureType == GestureType.Tap)
                    {
                        if (!isMouseClicked)
                        {
                            isMouseClicked = true;
                            lastTouch = input.Gestures[i].Position;
                        }
                    }
                    else
                    {
                        if (gesture.GestureType == GestureType.FreeDrag)
                        {
                            lastTouch.X += input.Gestures[i].Delta.X;
                            lastTouch.Y += input.Gestures[i].Delta.Y;
                        }
                    }
                }
            }
            #endif
        }
コード例 #3
0
ファイル: MenuScreen.cs プロジェクト: krolth/RetroPixels
        /// <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) ||
                input.IsNewKeyPress(Keys.Escape, ControllingPlayer, out player))
            {
                OnCancel(player);
            }

            #if !WINDOWS_PHONE
            // Move to the previous menu entry?
            if (input.IsMenuUp(ControllingPlayer))
            {
                selectedEntry--;

                if (selectedEntry < 0)
                    selectedEntry = menuEntries.Count - 1;
            }

            // Move to the next menu entry?
            if (input.IsMenuDown(ControllingPlayer))
            {
                selectedEntry++;

                if (selectedEntry >= menuEntries.Count)
                    selectedEntry = 0;
            }

            PlayerIndex playerIndex;

            if (input.IsMenuSelect(ControllingPlayer, out playerIndex))
            {
                OnSelectEntry(selectedEntry, playerIndex);
            }
            else if (input.IsMenuCancel(ControllingPlayer, out playerIndex))
            {
                OnCancel(playerIndex);
            }

            var mouseState = Mouse.GetState();
            if (mouseState.LeftButton == ButtonState.Pressed)
            {
                for (int i = 0; i < menuEntries.Count; i++)
                {
                    MenuEntry menuEntry = menuEntries[i];
                    if (GetMenuEntryHitBounds(menuEntry).Contains(new Point(mouseState.X, mouseState.Y)))
                    {
                        // 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);
                    }
                }
            }
            #else
            // 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);
                        }
                    }
                }
            }
            #endif
        }
コード例 #4
0
        /// <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();
            }
        }
コード例 #5
0
ファイル: GameScreen.cs プロジェクト: krolth/RetroPixels
 /// <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)
 {
 }