/// <summary> /// Responde ao input, aceitando ou cancelando a mensagem da janela /// </summary> public override void HandleInput(InputState input) { PlayerIndex playerIndex; // Se o 'ESC' for selecionado if (input.IsMenuSelect(this.ControllingPlayer, out playerIndex)) { // Se o evento for diferente de nulo if (this.Accepted != null) { this.Accepted(this, new PlayerIndexEventArgs(playerIndex)); } // Chama saída do game this.ExitScreen(); } else if (input.IsMenuCancel(this.ControllingPlayer, out playerIndex)) { // Se o evento for diferente de nulo if (this.Cancelled != null) { this.Cancelled(this, new PlayerIndexEventArgs(playerIndex)); } // Chama saída da tela this.ExitScreen(); } }
/// <summary> /// Verifica a entrada do teclado /// </summary> public override void HandleInput(InputState inputState) { // Se mover para entrada(item) anterior if (inputState.IsMenuUp(this.ControllingPlayer)) { // Decrementa para subir pelos itens this.selectedEntry--; // Se for menor que zera if (this.selectedEntry < 0) { // Vai para o último item do menu this.selectedEntry = this.menuEntries.Count - 1; } } // Se mover para entrada(item) anterior if (inputState.IsMenuDown(this.ControllingPlayer)) { // Incrementa para descer pelos itens this.selectedEntry++; // Se for maior que a quantidade de itens do menu if (this.selectedEntry >= this.menuEntries.Count) { // Vai para o primeiro item do menu this.selectedEntry = 0; } } // Controlador nulo inicialmente, que será passado através de 'OnSelectItem' e 'OnCancel' PlayerIndex playerIndex; // Se algum item do menu foi selecionado if (inputState.IsMenuSelect(ControllingPlayer, out playerIndex)) { OnSelectEntry(selectedEntry, playerIndex); } // Senão... else if (inputState.IsMenuCancel(ControllingPlayer, out playerIndex)) { OnCancel(playerIndex); } }
/// <summary> /// Recebe a entrada do teclado /// </summary> public override void HandleInput(InputState input) { if (input == null) throw new ArgumentNullException("input"); // Pega a posição de jogador ativa int playerIndex = (int)ControllingPlayer.Value; // Recebe estado do teclado e GamePad KeyboardState keyboardState = input.CurrentKeyboardStates[playerIndex]; GamePadState gamePadState = input.CurrentGamePadStates[playerIndex]; // Desconectado? bool gamePadDisconnected = !gamePadState.IsConnected && input.GamePadWasConnected[playerIndex]; // Se o game for pausado if (input.IsPauseGame(ControllingPlayer) || gamePadDisconnected) { // Adiciona o menu de 'Pause' ScreenManager.AddScreen(new PauseMenuScreen(), ControllingPlayer); } // Senão... verificar se vai reiniciar a fase else if (input.IsReload(this.ControllingPlayer)) { this.ReloadCurrentLevel(); } }
/// <summary> /// Chamado somente quanto a tela estiver ativa, diferente do 'Update' /// </summary> public virtual void HandleInput(InputState input) { }