/// <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> /// Permite que las Scren puedan usar diferentes input. /// Este metodo debe ser desactivado para la screen cuando no esté activada(IsActive == false) /// </summary> /// <param name="input">Clase input que permite mapear el teclado.</param> public virtual void HandleInput(InputState input) { }
/// <summary> /// BUG: Al cambiar de goblin este queda en su último estado. /// </summary> /// <param name="input"></param> public override void HandleInput(InputState input) { if (IsActive) { if (input.IsSpace(null)) { HandleSelectGoblin(); } if (input.IsEscape(null)) { PopupScreen salir = new PopupScreen("Está seguro que quiere salir? o.ó "); salir.Accepted += end_Accepted; ScreenManagerController.AddScreen(salir, null); } foreach (Goblin goblin in goblins) { if (goblin.ID == selectedGoblin) if (goblin.EstadoPersonaje != EstadoPersonaje.Muerto) goblin.HandleInput(input); else { HandleSelectGoblin(); } } } }
/// <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(); } }