#pragma once #include "ifdefs.h" #ifndef INPUT_H #define INPUT_H #define INPUT_NULL 0 #define INPUT_UP 1 #define INPUT_DOWN 2 #define INPUT_LEFT 3 #define INPUT_RIGHT 4 #define INPUT_ACCEPT 5 #define INPUT_CANCEL 6 #define INPUT_BUTTON_1 7 #define INPUT_BUTTON_2 8 #define INPUT_BUTTON_3 9 #define INPUT_BUTTON_4 10 #define INPUT_BUTTON_5 11 #define INPUT_BUTTON_6 12 #define INPUT_BUTTON_7 13 #define INPUT_BUTTON_8 14 #define REPEAT_TRUE true #define REPEAT_FALSE false #define USE_KEYBOARD 0 #define USE_GAMECONTROLLER 1 // Clase Input class Input { private: struct keyBindings_t { Uint8 scancode; // Scancode asociado bool active; // Indica si está activo }; keyBindings_t mKeyBindings[15]; // Vector con las teclas asociadas a los inputs predefinidos struct GameControllerBindings_t { SDL_GameControllerButton button; // GameControllerButton asociado bool active; // Indica si está activo }; GameControllerBindings_t mGameControllerBindings[15]; // Vector con las teclas asociadas a los inputs predefinidos SDL_GameController *mGameController; // Manejador para el mando SDL_Haptic *mControllerHaptic; // Manejador para el mando con vibración bool mGameControllerFound; // Variable para saber si hay un mando conectado int mSource; // Indica si el objeto usará un mando o un teclado public: // Constructor Input(int source); // Destructor ~Input(); // Asigna uno de los posibles inputs a una tecla del teclado void bindKey(Uint8 input, SDL_Scancode code); // Asigna uno de los posibles inputs a un botón del mando void bindGameController(Uint8 input, SDL_GameControllerButton button); // Comprueba si un input esta activo bool checkInput(Uint8 input, bool repeat); // Comprueba si hay un mando conectado bool discoverGameController(); }; #endif