using Godot; public enum InputHandlers { MainGame, GameOver } /// /// Máquina de estado que obtém ações do usuário conforme o estado atual do jogo. /// public partial class InputHandler : Node { private Godot.Collections.Dictionary inputHandlers = []; [Export] private InputHandlers startingInputHandler; private BaseInputHandler selectedInputHandler; public override void _Ready() { base._Ready(); // Controles para quando o jogador está vivo e jogando normalmente. inputHandlers.Add(InputHandlers.MainGame, GetNode("MainGameInputHandler")); // Controles para quando o jogador está morto. inputHandlers.Add(InputHandlers.GameOver, GetNode("GameOverInputHandler")); SetInputHandler(startingInputHandler); } public Action GetAction(Player player) { return selectedInputHandler.GetAction(player); } /// /// Define o esquema de controle atual do jogo /// para o estado informado. /// /// Estado do jogo. public void SetInputHandler(InputHandlers inputhandler) { selectedInputHandler = inputHandlers[inputhandler]; } }