/// <summary> /// Reacciona al input del usuario, cambiando entre Entries y aceptando /// o cancelando el menú. /// </summary> /// <param name="input">Input de los controles</param> public override void HandleInput(InputState input) { //Se mueve al entry superior (o al último) if (input.IsMenuUp(ControllingPlayer)) { selectedEntry--; if (selectedEntry < 0) selectedEntry = menuEntries.Count - 1; } //Se mueve al siguiente entry o al primero if (input.IsMenuDown(ControllingPlayer)) { selectedEntry++; if (selectedEntry >= menuEntries.Count) selectedEntry = 0; } /* Acepta o cancela el menú. playerIndex guarda quien es el player que ha hecho la acción. * De esta forma es posible saber quien gatillo el evento. */ PlayerIndex playerIndex; if (input.IsMenuSelect(ControllingPlayer, out playerIndex)) { OnSelectEntry(selectedEntry, playerIndex); } else if (input.IsMenuCancel(ControllingPlayer, out playerIndex)) { OnCancel(playerIndex); } }
/// <summary> /// Como es una Screen puede responder a los controles de los usuarios, este /// metodo permite la detección del teclado. /// </summary> /// <param name="input">Input que tiene el mapeo del teclado.</param> public override void HandleInput(InputState input) { PlayerIndex playerIndex; /* Pasamos el ControllingPlauer como nulo si queremos que cualquier player * realice acciones, o con un valor para el plauer que deseamos que * realice la acción. * Luego playerIndex guardará la información de quien hizo la acción. */ if (input.IsMenuSelect(ControllingPlayer, out playerIndex)) { // Levanta el evento Accepted y se sale del Popup if (Accepted != null) Accepted(this, new PlayerIndexEventArgs(playerIndex)); ExitScreen(); } else if (input.IsMenuCancel(ControllingPlayer, out playerIndex)) { // Levanta el evento Cancelled y se sale del Popup if (Cancelled != null) Cancelled(this, new PlayerIndexEventArgs(playerIndex)); ExitScreen(); } }