/// <summary> /// Responds to user input, changing the selected entry and accepting /// or cancelling the menu. /// </summary> public override void HandleInput(InputState input) { var touch = input.TouchState; var rect = new Rectangle(0, 0, 100, 30); if (touch.Count == 1) { for (int i = 0; i < menuEntries.Count; i++) { rect.X = (int)menuEntries[i].Position.X; rect.Y = (int)menuEntries[i].Position.Y; selectedEntry = i; if (rect.Contains((int)touch[0].Position.X, (int)touch[0].Position.Y)) { OnSelectEntry(selectedEntry, 0); break; } } } // 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; } } // Accept or cancel the menu? 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 // OnSelectEntry and OnCancel, so they can tell which player triggered them. PlayerIndex playerIndex; if (input.IsMenuSelect(ControllingPlayer, out playerIndex)) { OnSelectEntry(selectedEntry, playerIndex); } else if (input.IsMenuCancel(ControllingPlayer, out playerIndex)) { OnCancel(playerIndex); } }
/// <summary> /// Responds to user input, changing the selected entry and accepting /// or cancelling the menu. /// </summary> public override void HandleInput(InputState input) { // Move to the previous menu entry? if (input.IsMenuUp(ControllingPlayer)) { selectedEntry--; menuSFX.Play(); if (selectedEntry < 0) { selectedEntry = menuEntries.Count - 1; } } // Move to the next menu entry? if (input.IsMenuDown(ControllingPlayer)) { selectedEntry++; menuSFX.Play(); if (selectedEntry >= menuEntries.Count) { selectedEntry = 0; } } // Accept or cancel the menu? 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 // OnSelectEntry and OnCancel, so they can tell which player triggered them. PlayerIndex playerIndex; if (input.IsMenuSelect(ControllingPlayer, out playerIndex)) { OnSelectEntry(selectedEntry, playerIndex); } else if (input.IsMenuCancel(ControllingPlayer, out playerIndex)) { OnCancel(playerIndex); } }
/// <summary> /// Responds to user input, changing the selected entry and accepting /// or cancelling the menu /// </summary> public override void HandleInput(InputState input) { // Move to the previous menu entry if (input.IsMenuUp()) { // Decrement the currently selected entry selectedEntry--; // If the entry is less than 0, wrap it back around to the last entry if (selectedEntry < 0) { selectedEntry = menuEntries.Count - 1; } } // Move to the next menu entry if (input.IsMenuDown()) { // Increment the currently selected entry selectedEntry++; // If the entry is the last entry, wrap it back around to first entry if (selectedEntry >= menuEntries.Count) { selectedEntry = 0; } } // Check to see if a menu was selected if (input.IsMenuSelect()) { // Trigger the event for the selected entry OnSelectEntry(selectedEntry); } // Otherwhise, check if the user cancelled the menu else if (input.IsMenuCancel()) { // Call the cancel method to take the user out OnCancel(); } }
/// <summary> /// Responds to user input, changing the selected entry and accepting /// or cancelling the menu. /// </summary> public override void HandleInput(InputState input) { // 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; } // Accept or cancel the menu? 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 // OnSelectEntry and OnCancel, so they can tell which player triggered them. PlayerIndex playerIndex; if (input.IsMenuSelect(ControllingPlayer, out playerIndex)) { OnSelectEntry(selectedEntry, playerIndex); } else if (input.IsMenuCancel(ControllingPlayer, out playerIndex)) { OnCancel(playerIndex); } }
/// <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); } if (input.IsMenuDown(ControllingPlayer)) { if (selectedEntry < menuEntries.Count - 1) selectedEntry += 1; } if (input.IsMenuUp(ControllingPlayer)) { if (selectedEntry > 0) selectedEntry -= 1; } if (input.IsMenuSelect(ControllingPlayer, out player)) { menuEntries[selectedEntry].OnSelectEntry(player); } if (input.MouseGesture.HasFlag(MouseGestureType.LeftClick)) { Point clickLocation = new Point((int)input.CurrentMousePosition.X, (int)input.CurrentMousePosition.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(clickLocation)) { // 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); } } } if (input.MouseGesture.HasFlag(MouseGestureType.Move)) { Point clickLocation = new Point((int)input.CurrentMousePosition.X, (int)input.CurrentMousePosition.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(clickLocation)) { // 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); selectedEntry = i; } } } // 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); } } } } }
/// <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); } #if WINDOWS // Take care of Keyboard input if (input.IsMenuUp(ControllingPlayer)) { selectedEntry--; if (selectedEntry < 0) selectedEntry = menuEntries.Count - 1; } else if (input.IsMenuDown(ControllingPlayer)) { selectedEntry++; if (selectedEntry >= menuEntries.Count) selectedEntry = 0; } else if (input.IsNewKeyPress(Keys.Enter, ControllingPlayer, out player) || input.IsNewKeyPress(Keys.Space, ControllingPlayer, out player)) { OnSelectEntry(selectedEntry, player); } MouseState state = Mouse.GetState(); if (state.LeftButton == ButtonState.Released) { if (isMouseDown) { isMouseDown = false; // convert the position to a Point that we can test against a Rectangle Point clickLocation = new Point(state.X, state.Y); // iterate the entries to see if any were tapped for (int i = 0; i < menuEntries.Count; i++) { MenuEntry menuEntry = menuEntries[i]; if (menuEntry.Destination.Contains(clickLocation)) { // 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 if (state.LeftButton == ButtonState.Pressed) { isMouseDown = true; // convert the position to a Point that we can test against a Rectangle Point clickLocation = new Point(state.X, state.Y); // iterate the entries to see if any were tapped for (int i = 0; i < menuEntries.Count; i++) { MenuEntry menuEntry = menuEntries[i]; if (menuEntry.Destination.Contains(clickLocation)) selectedEntry = i; } } #elif XBOX // Take care of Gamepad input if (input.IsMenuUp(ControllingPlayer)) { selectedEntry--; if (selectedEntry < 0) selectedEntry = menuEntries.Count - 1; } else if (input.IsMenuDown(ControllingPlayer)) { selectedEntry++; if (selectedEntry >= menuEntries.Count) selectedEntry = 0; } else if (input.IsNewButtonPress(Buttons.A, ControllingPlayer, out player)) OnSelectEntry(selectedEntry, player); #elif WINDOWS_PHONE // 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 (menuEntry.Destination.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 }
/// <summary> /// Responds to user input, changing the selected entry and accepting /// or cancelling the menu. /// </summary> public override void HandleInput(InputState input) { if (input.IsMenuCancel()) { OnCancel(null, null); } if (input.IsMenuUp()) { selectedEntry--; if (selectedEntry < 0) { selectedEntry = menuEntries.Count - 1; } while (!menuEntries[selectedEntry].Enabled) { selectedEntry--; if (selectedEntry < 0) { selectedEntry = menuEntries.Count - 1; } } } if (input.IsMenuDown()) { selectedEntry++; if (selectedEntry >= menuEntries.Count) { selectedEntry = 0; } while (!menuEntries[selectedEntry].Enabled) { selectedEntry++; if (selectedEntry >= menuEntries.Count) { selectedEntry = 0; } } } if (input.IsMenuLeft()) { menuEntries[selectedEntry].Left(); } if (input.IsMenuRight()) { menuEntries[selectedEntry].Right(); } if (input.IsMenuSelect()) { OnSelectEntry(selectedEntry); } if (selectedEntry < 0) { selectedEntry = menuEntries.Count - 1; } if (selectedEntry >= menuEntries.Count) { selectedEntry = 0; } Point mouseLocation = ScreenManager.ScaledMousePos; for (int i = 0; i < menuEntries.Count; i++) { MenuEntry menuEntry = menuEntries[i]; if (GetMenuEntryHitBounds(menuEntry).Contains(mouseLocation)) { selectedEntry = i; // Mouse left click? if (input.CurrentMouseState.LeftButton == ButtonState.Released && input.LastMouseState.LeftButton == ButtonState.Pressed) { menuEntry.Click(mouseLocation.X, mouseLocation.Y); } } } }
/// <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); } #if WINDOWS // Take care of Keyboard input if (input.IsMenuUp(ControllingPlayer)) { selectedEntry--; if (selectedEntry < 0) { selectedEntry = menuEntries.Count - 1; } } else if (input.IsMenuDown(ControllingPlayer)) { selectedEntry++; if (selectedEntry >= menuEntries.Count) { selectedEntry = 0; } } else if (input.IsNewKeyPress(Keys.Enter, ControllingPlayer, out player) || input.IsNewKeyPress(Keys.Space, ControllingPlayer, out player)) { OnSelectEntry(selectedEntry, player); } MouseState state = Mouse.GetState(); if (state.LeftButton == ButtonState.Released) { if (isMouseDown) { isMouseDown = false; // convert the position to a Point that we can test against a Rectangle Point clickLocation = new Point(state.X, state.Y); // iterate the entries to see if any were tapped for (int i = 0; i < menuEntries.Count; i++) { MenuEntry menuEntry = menuEntries[i]; if (menuEntry.Destination.Contains(clickLocation)) { // 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 if (state.LeftButton == ButtonState.Pressed) { isMouseDown = true; // convert the position to a Point that we can test against a Rectangle Point clickLocation = new Point(state.X, state.Y); // iterate the entries to see if any were tapped for (int i = 0; i < menuEntries.Count; i++) { MenuEntry menuEntry = menuEntries[i]; if (menuEntry.Destination.Contains(clickLocation)) { selectedEntry = i; } } } #elif XBOX // Take care of Gamepad input if (input.IsMenuUp(ControllingPlayer)) { selectedEntry--; if (selectedEntry < 0) { selectedEntry = menuEntries.Count - 1; } } else if (input.IsMenuDown(ControllingPlayer)) { selectedEntry++; if (selectedEntry >= menuEntries.Count) { selectedEntry = 0; } } else if (input.IsNewButtonPress(Buttons.A, ControllingPlayer, out player)) { OnSelectEntry(selectedEntry, player); } #elif WINDOWS_PHONE // 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 (menuEntry.Destination.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 }
public void HandleInput(InputState input) { int oldSelected = selected; int oldLibrary = libraryIndex; if (input.IsMenuDown(screen.ControllingPlayer)) { if (selected < library.Count - 1) { ++selected; if (selected == numEntries + index) { ++index; } loadAroundIndex(selected); } } if (input.IsMenuUp(screen.ControllingPlayer)) { if (selected > 0) { --selected; if (selected == index - 1) { --index; } loadAroundIndex(selected); } } PlayerIndex player; if (input.IsNewButtonPress(Buttons.X, screen.ControllingPlayer, out player)) { MediaPlayer.Play(library[selected]); } if (input.IsNewButtonPress(Buttons.LeftShoulder, screen.ControllingPlayer, out player) || input.IsNewKeyPress(Keys.Left, screen.ControllingPlayer, out player)) { if (libraryIndex > 0) { --libraryIndex; mediaSourceName = MediaSource.GetAvailableMediaSources()[libraryIndex].Name; library = new MediaLibrary(MediaSource.GetAvailableMediaSources()[libraryIndex]).Songs; index = 0; selected = 0; initializeSongDataArray(); } } if (input.IsNewButtonPress(Buttons.RightShoulder, screen.ControllingPlayer, out player) || input.IsNewKeyPress(Keys.Right, screen.ControllingPlayer, out player)) { if (libraryIndex < MediaSource.GetAvailableMediaSources().Count - 1) { ++libraryIndex; mediaSourceName = MediaSource.GetAvailableMediaSources()[libraryIndex].Name; library = new MediaLibrary(MediaSource.GetAvailableMediaSources()[libraryIndex]).Songs; index = 0; selected = 0; initializeSongDataArray(); } } if (input.IsNewButtonPress(Buttons.RightTrigger, screen.ControllingPlayer, out player)) { if (library.Count > 0) { char c = '0'; // Skip ahead artist letter if (SongDataArray[selected].Artist.Length > 0) { c = SongDataArray[selected].Artist.ToLower()[0]; } int newIndex; for (newIndex = selected; newIndex < library.Count; ++newIndex) { loadAroundIndex(newIndex); if (SongDataArray[newIndex].Artist.Length == 0) continue; if (SongDataArray[newIndex].Artist.ToLower()[0] != c) break; } selected = Math.Min(newIndex, library.Count - 1); index = selected; } } if (input.IsNewButtonPress(Buttons.LeftTrigger, screen.ControllingPlayer, out player)) { if (library.Count > 0) { char c = 'z'; // Skip back artist letter if (SongDataArray[selected].Artist.Length > 0) { c = SongDataArray[selected].Artist.ToLower()[0]; } int newIndex; bool nextLetter = false; for (newIndex = selected; newIndex >= 0; --newIndex) { loadAroundIndex(newIndex); if (SongDataArray[newIndex].Artist.Length == 0) continue; if (SongDataArray[newIndex].Artist.ToLower()[0] != c && nextLetter) { newIndex++; break; } if (SongDataArray[newIndex].Artist.ToLower()[0] != c) { c = SongDataArray[newIndex].Artist.ToLower()[0]; nextLetter = true; } } selected = Math.Max(newIndex, 0); index = selected; } } if (oldSelected != selected || libraryIndex != oldLibrary) { if (library.Count > selected) { MediaPlayer.Play(library[selected]); NarlyGame.currentSong = library[selected].Name; } } }
/// <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); } if (input.IsMenuDown(ControllingPlayer)) { if (selectedEntry < menuEntries.Count - 1) { selectedEntry += 1; } } if (input.IsMenuUp(ControllingPlayer)) { if (selectedEntry > 0) { selectedEntry -= 1; } } if (input.IsMenuSelect(ControllingPlayer, out player)) { menuEntries[selectedEntry].OnSelectEntry(player); } if (input.MouseGesture.HasFlag(MouseGestureType.LeftClick)) { Point clickLocation = new Point((int)input.CurrentMousePosition.X, (int)input.CurrentMousePosition.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(clickLocation)) { // 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); } } } if (input.MouseGesture.HasFlag(MouseGestureType.Move)) { Point clickLocation = new Point((int)input.CurrentMousePosition.X, (int)input.CurrentMousePosition.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(clickLocation)) { // 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); selectedEntry = i; } } } // 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); } } } } }
/// <summary> /// Responds to user input, changing the selected entry and accepting /// or cancelling the menu. /// </summary> public override void HandleInput(InputState input) { var touch = input.TouchState; var rect = new Rectangle(0,0,100,30); if (touch.Count == 1 ) { for (int i = 0; i < menuEntries.Count; i++){ rect.X = (int)menuEntries[i].Position.X; rect.Y = (int)menuEntries[i].Position.Y; selectedEntry = i; if (rect.Contains((int)touch[0].Position.X, (int)touch[0].Position.Y)){ OnSelectEntry(selectedEntry, 0); break; } } } // 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; } // Accept or cancel the menu? 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 // OnSelectEntry and OnCancel, so they can tell which player triggered them. PlayerIndex playerIndex; if (input.IsMenuSelect(ControllingPlayer, out playerIndex)) { OnSelectEntry(selectedEntry, playerIndex); } else if (input.IsMenuCancel(ControllingPlayer, out playerIndex)) { OnCancel(playerIndex); } }
/// <summary> /// Responds to user input, changing the selected entry and accepting /// or cancelling the menu. /// </summary> public override void HandleInput(InputState input) { if (input.IsMenuCancel()) { OnCancel(null, null); } if (input.IsMenuUp()) { selectedEntry--; if (selectedEntry < 0) selectedEntry = menuEntries.Count - 1; while (!menuEntries[selectedEntry].Enabled) { selectedEntry--; if (selectedEntry < 0) selectedEntry = menuEntries.Count - 1; } } if (input.IsMenuDown()) { selectedEntry++; if (selectedEntry >= menuEntries.Count) selectedEntry = 0; while (!menuEntries[selectedEntry].Enabled) { selectedEntry++; if (selectedEntry >= menuEntries.Count) selectedEntry = 0; } } if (input.IsMenuLeft()) menuEntries[selectedEntry].Left(); if (input.IsMenuRight()) menuEntries[selectedEntry].Right(); if (input.IsMenuSelect()) OnSelectEntry(selectedEntry); if (selectedEntry < 0) selectedEntry = menuEntries.Count - 1; if (selectedEntry >= menuEntries.Count) selectedEntry = 0; Point mouseLocation = ScreenManager.ScaledMousePos; for (int i = 0; i < menuEntries.Count; i++) { MenuEntry menuEntry = menuEntries[i]; if (GetMenuEntryHitBounds(menuEntry).Contains(mouseLocation)) { selectedEntry = i; // Mouse left click? if (input.CurrentMouseState.LeftButton == ButtonState.Released && input.LastMouseState.LeftButton == ButtonState.Pressed) { menuEntry.Click(mouseLocation.X, mouseLocation.Y); } } } }
/// <summary> /// Responds to user input, changing the selected entry and accepting /// or cancelling the menu. /// </summary> public override void HandleInput(InputState input) { // Move to the previous menu entry? if (input.IsMenuUp(ControllingPlayer)) { keyPos.Y--; if (keyPos.Y < 0) { keyPos.Y = keys.Length - 1; } } // Move to the next menu entry? if (input.IsMenuDown(ControllingPlayer)) { keyPos.Y++; if (keyPos.Y > keys.Length-1) { keyPos.Y = 0; } } PlayerIndex playerIndex; if (input.IsMenuRight(ControllingPlayer)) { keyPos.X++; if (keyPos.X > keys[(int)keyPos.Y].Length - 1) { keyPos.X = 0; } } if (input.IsMenuLeft(ControllingPlayer)) { keyPos.X--; if (keyPos.X < 0) { keyPos.X = keys[(int)keyPos.Y].Length - 1; } } // Move to the next menu entry? // public bool IsNewButtonPress(Buttons button, PlayerIndex? controllingPlayer, // out PlayerIndex playerIndex) if ( input.IsNewButtonPress(Buttons.Y,ControllingPlayer, out playerIndex) ) { playerNameChars[selectedEntry] = ' '; selectedEntry = Math.Min(selectedEntry + 1, numNameChars - 1); playerNameMenuEntry.Text = (new string(playerNameChars, 0, playerNameChars.Length)); } // Accept or cancel the menu? 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 // OnSelectEntry and OnCancel, so they can tell which player triggered them. if (input.IsNewButtonPress(Buttons.A, ControllingPlayer, out playerIndex) ) { OnSelectEntry(selectedEntry, playerIndex); } else if (input.IsNewButtonPress(Buttons.B, ControllingPlayer, out playerIndex) || input.IsNewButtonPress(Buttons.X, ControllingPlayer, out playerIndex) ) { OnCancel(playerIndex); } else if (input.IsNewButtonPress(Buttons.Start, ControllingPlayer, out playerIndex)) { CompleteEntry(); } }
/// <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) { // Check if the user's input is null and throw an exception if it is if (input == null) { throw new ArgumentNullException("input"); } // Look up inputs for the active player profile KeyboardState keyboardState = input.CurrentKeyboardStates; // Checks to see if the user hit the pause button (esc) if (input.IsPauseGame()) { // Add a new screen on top of our current screen to display the pause menu ScreenManager.AddScreen(new PauseMenuScreen()); } // Check to see if our menu selection key was hit (Z) if (input.IsMenuSelect()) { // Check to see if the player already has the move they are on in the selection screen equipped if (PlayerInfo.Moves.Contains(selectedMove)) { // Get the index of this move and remove it from the player's currently equipped moves int index = Array.IndexOf(PlayerInfo.Moves, selectedMove); PlayerInfo.Moves[index] = -1; } // Otherwise, if there is an open slot for equipping a new move else if (PlayerInfo.Moves.Contains(-1)) { // Get the index of the open slot and fill it with the new selected index int index = Array.IndexOf(PlayerInfo.Moves, -1); PlayerInfo.Moves[index] = selectedMove; } } // Check to see if the start button (enter) was pressed and if the player has any moves equipped (I.E anything with an index greater than -1) if (input.IsStartButton() && Array.Exists(PlayerInfo.Moves, selectedMove => selectedMove > -1)) { // Load the next match LoadingScreen.Load(ScreenManager, false, new MatchupInfoScreen()); } // Check to see if the up arrow key was hit if (input.IsMenuUp()) { // Decrement the selected move selectedMove--; // Wrap the selected move around if the user goes beyond the minimum moves if (selectedMove < 0) { selectedMove = maxMoves - 1; } } // Check to see if the down arrow key was hit if (input.IsMenuDown()) { // Increment the selected move selectedMove++; // Wrap back around if the player goes beyond the maximum amount of moves if (selectedMove >= maxMoves) { selectedMove = 0; } } }