Controles do Jogador

Gerenciado de forma centralizada pelo inputManager.ts , que abstrai a complexidade da API de entrada do Phaser e fornece uma interface simplificada para o restante do jogo.

inputManager.ts

Localização

src/components/inputManager.ts


Propósito

Classe responsável por lidar com a configuração e o acesso às entradas do teclado, centralizando toda a lógica de input do jogo.


Principais Responsabilidades

setupControls(scene: Phaser.Scene)

  • Função: Inicializa os listeners de teclado na cena fornecida e mapeia teclas específicas para ações do jogo.

  • Teclas configuradas no Arretado:

    • Movimento: Teclas W, A, S, D (cima, esquerda, baixo, direita) e/ou as teclas de seta correspondentes, para controlar a movimentação do jogador.

    • Boost: Tecla Espaço, utilizada para ativar temporariamente um aumento de velocidade para o jogador (possui tempo de recarga).

    • Pausa: Tecla P, usada para pausar e retomar o jogo, alternando a visibilidade e o estado da PauseScene.


getKeys()

  • Função: Retorna um objeto contendo as referências aos objetos de tecla do Phaser (Phaser.Input.Keyboard.Key).

  • Uso: Permite que outras classes, como Player e GameScene, consultem o estado atual de cada tecla (se está pressionada, se foi pressionada recentemente, etc.) sem acessar diretamente o gerenciador de entrada do Phaser.


Implementação no Player.ts

No construtor

  • O controlKeys do jogador é inicializado chamando inputManager.getKeys(), obtendo as referências para as teclas configuradas.


No playerMovement()

  • Verifica o estado das teclas de movimento (right, left, up, down) para determinar a direção do movimento do jogador.

  • Verifica a tecla space para ativar o boost, controlando o tempo de recarga e emitindo um evento (playerEvents.boostActivated) através do globalEventEmitter, para que a UI exiba o cooldown.


No playerAnimation()

  • As animações do jogador (lampiaoRun e lampiaoIdle) são acionadas com base no retorno do playerMovement(), que indica se o jogador está se movendo ou parado.


Implementação no GameScene.ts

No create()

  • inputManager.setupControls(this) é chamado para garantir que os controles de entrada estejam ativos para a cena de jogo.


No handlePause()

  • Este método verifica se a tecla de pausa (P) foi pressionada.

  • Se sim:

    • Alterna o estado de pausa da GameScene e do gameHud.

    • Lança ou para a PauseScene conforme necessário.

Atualizado