working on game controller input

This commit is contained in:
2021-08-24 17:57:21 +02:00
parent b61fd84e22
commit 7c0201f913
3 changed files with 156 additions and 81 deletions

View File

@@ -23,24 +23,36 @@
#define REPEAT_TRUE true
#define REPEAT_FALSE false
#define USE_KEYBOARD 0
#define USE_GAMECONTROLLER 1
// Clase Input
class Input
{
private:
struct input_t
struct keyBindings_t
{
Uint8 scancode; // Scancode asociado
bool active; // Indica si está activo
};
input_t mInput[15]; // Vector con las teclas asociadas a los inputs predefinidos
keyBindings_t mKeyBindings[15]; // Vector con las teclas asociadas a los inputs predefinidos
//SDL_Joystick *mGameController; // Manejador para el mando 1
//SDL_Haptic *mControllerHaptic; // Manejador para el mando con vibración
//bool mGameControllerFound; // Variable para saber si hay un mando conectado
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();
Input(int source);
// Destructor
~Input();
@@ -48,11 +60,14 @@ public:
// 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);
// Gestiona las entradas desde el mando de juego
bool checkGameController(Uint8 state);
// Comprueba si hay un mando conectado
bool discoverGameController();
};
#endif