> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Portabilidade do Windows.XBOX.Input para o GameInput

> Portabilidade do Windows.XBOX.Input para o GameInput

<a id="introductionSection" />

`Windows.Xbox.Input` é a API de entrada para o desenvolvimento com o XBOX One Software Development Kit anterior ao GDK. Conceitualmente, o `GameInput` enxerga os dispositivos e as leituras de entrada de uma maneira diferente. Este tópico descreve algumas das principais diferenças entre `Windows.Xbox.Input` e `GameInput`.

## Centrado na entrada vs. centrado no dispositivo

A principal diferença entre `Windows.Xbox.Input` e `GameInput` é que o primeiro exige que você comece reunindo os dispositivos e o estado de entrada como uma propriedade de um dispositivo. Por outro lado, o `GameInput` começa com um fluxo filtrável de leituras de entrada que têm dispositivos associados.

## Procurando o pressionamento do botão A

Quando um jogo é iniciado pela primeira vez, muitas vezes o usuário precisa pressionar **A** para indicar que está pronto para continuar. Aqui, um exemplo compara como fazer isso em `Windows.Xbox.Input` e em `GameInput`. Este exemplo procura apenas um gamepad. Observe que os exemplos foram simplificados para fins de demonstração.

### Windows.Xbox.Input

O exemplo de código a seguir começa enumerando todos os gamepads conectados ao sistema e armazenando-os no vetor `gamepads`. Em seguida, ele itera por `gamepads` em um loop, examina a leitura de entrada atual de cada um e verifica em cada leitura se **A** foi pressionado.

<Note>Este código se refere a uma API anterior. Essas chamadas não existem no `GameInput`.</Note>

```c++ theme={null}
void PollGamepadInput()
{
    // Find all gamepads.
    IVectorView<IGamepad^>^ gamepads = Gamepad::GetGamepads();

    // Cycle through each gamepad.
    for ( unsigned int i = 0; i < gamepads->Size; ++i )
    {
        // Get the gamepad's current reading.
        IGamepadReading^ reading = gamepads->GetAt(i)->GetCurrentReading();

        if ( reading->IsAPressed )
        {
            // Logic for the A button being pressed.
        }
    }
}
```

Esse modelo poderia ser aprimorado. O jogo precisa armazenar cópias dos diferentes dispositivos conectados ao sistema. Você precisa entender as especificidades de cada dispositivo. Além disso, ao armazenar uma cópia local de todos os gamepads, o código captura um estado em um momento específico, em vez de obter as leituras mais atualizadas.

### GameInput

No exemplo de código a seguir, o código procura a leitura de gamepad mais recente de qualquer dispositivo. Ao chamar [GetCurrentReading](/pt-BR/reference/input/gameinput/interfaces/igameinput/methods/igameinput_getcurrentreading) com um filtro [GameInputKind](/pt-BR/reference/input/gameinput/enums/gameinputkind) definido como `GamePad`, o código solicita que `m_gameInput` retorne somente leituras de gamepad. Em seguida, o código consulta o estado da leitura e verifica se **A** foi pressionado.

Talvez você queira acompanhar com qual gamepad está se comunicando. Para obter um exemplo mais completo, confira [Leituras do GameInput](/pt-BR/build/core-features/common/input/overviews/input-readings).

```c++ theme={null}
IGameInput* g_gameInput = nullptr;

HRESULT InitializeInput()
{
    return GameInputCreate(&g_gameInput);
}

void PollGamepadInput()
{
    ComPtr<IGameInputReading> reading;

    // Get the most current gamepad reading, not filtering by a specific device.
    // An error from the GetReading method indicates that no gamepad readings
    // were found.
    if (SUCCEEDED(g_gameInput->GetCurrentReading(GameInputKindGamepad, nullptr, &reading)))
    {
        // Read the gamepad state.
        GameInputGamepadState state;
        reading->GetGamepadState(&state);

        if (state.buttons & GameInputGamepadA)
        {
            // Logic for the A button being pressed.
        }
    }
}
```

<Note>O `GameInput` não exige que você itere pelos dispositivos e verifique cada leitura. Em vez disso, você pode verificar o estado de entrada mais recente com uma única chamada de método. Você pode escolher o quanto deseja saber sobre cada dispositivo físico.</Note>

<a id="seeAlsoSection" />

## Documentação de referência da API

* [GameInput (conteúdo da API)](/pt-BR/reference/input/gameinput/gameinput_members)

## Confira também

[Visão geral do GameInput](/pt-BR/build/core-features/common/input/overviews/input-overview)

[Referência da API de entrada](/pt-BR/reference/input/gc-reference-input-toc)

[Microsoft Game Development Kit](/pt-BR/services/playfab/sdks/platforms/gdk)


## Related topics

- [Guias de portabilidade para o XBOX GDK](/pt-BR/home/build-first-title/porting-guides.md)
- [Portabilidad de Windows.XBOX.Input a GameInput](/es/build/core-features/common/input/porting/input-porting-wxi.md)
- [Porting from Windows.XBOX.Input to GameInput](/build/core-features/common/input/porting/input-porting-wxi.md)
- [从 Windows.XBOX.Input 移植到 GameInput](/zh-CN/build/core-features/common/input/porting/input-porting-wxi.md)
- [Windows.XBOX.Input から GameInput への移植](/ja-jp/build/core-features/common/input/porting/input-porting-wxi.md)
