- [NEW] Afegit soport per a gamepad en JInput
This commit is contained in:
@@ -9,10 +9,30 @@ namespace input
|
||||
static uint8_t keydown = 0;
|
||||
static uint8_t btnClicked = 0;
|
||||
static int wheel = 0;
|
||||
static SDL_GameController *gamepad = NULL;
|
||||
static int8_t pad_btn_pressed = SDL_CONTROLLER_BUTTON_INVALID;
|
||||
static int8_t pad_btn_down = SDL_CONTROLLER_BUTTON_INVALID;
|
||||
|
||||
void initGamePad()
|
||||
{
|
||||
const int num_joysticks = SDL_NumJoysticks();
|
||||
if (num_joysticks>=1) {
|
||||
for (int i=0; i<num_joysticks; ++i) {
|
||||
if (SDL_IsGameController(i)) {
|
||||
gamepad = SDL_GameControllerOpen(i);
|
||||
if (SDL_GameControllerGetAttached(gamepad) == SDL_TRUE) {
|
||||
SDL_GameControllerEventState(SDL_ENABLE);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void init()
|
||||
{
|
||||
keys = SDL_GetKeyboardState(NULL);
|
||||
initGamePad();
|
||||
}
|
||||
|
||||
// Determina si la tecla especificada està sent polsada ara mateix
|
||||
@@ -45,6 +65,40 @@ namespace input
|
||||
return keypressed;
|
||||
}
|
||||
|
||||
|
||||
// Determina si el botó del pad especificat està sent polsat ara mateix
|
||||
bool padBtnDown(const int8_t btn)
|
||||
{
|
||||
if (!gamepad) return false;
|
||||
return SDL_GameControllerGetButton(gamepad, SDL_GameControllerButton(btn)) == 1;
|
||||
}
|
||||
|
||||
// Determina si el botó del pad especificat ha sigut polsat, pero no tornarà a ser true fins
|
||||
bool padBtnPressed(const int8_t btn)
|
||||
{
|
||||
return btn == pad_btn_pressed;
|
||||
}
|
||||
|
||||
// Determina si hi ha algun botó del pad polsat ara mateix
|
||||
bool anyPadBtn()
|
||||
{
|
||||
return pad_btn_down != SDL_CONTROLLER_BUTTON_INVALID;
|
||||
}
|
||||
|
||||
// Torna el codi del botó del pad que està sent polsat ara mateix
|
||||
const int8_t whichPadBtn()
|
||||
{
|
||||
return pad_btn_down;
|
||||
}
|
||||
|
||||
// Torna el codi del botó del pad que està sent polsat ara mateix
|
||||
const int8_t getPadBtnPressed()
|
||||
{
|
||||
return pad_btn_pressed;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// (US INTERN) Actualitza la tecla actualment polsada (keydown) desde jgame
|
||||
void updateKey(const uint8_t key)
|
||||
{
|
||||
@@ -69,6 +123,18 @@ namespace input
|
||||
wheel = dy;
|
||||
}
|
||||
|
||||
// (US INTERN) Actualitza el botó actualment polsat (keydown) desde jgame
|
||||
void updatePadBtn(const int8_t btn)
|
||||
{
|
||||
pad_btn_down = btn;
|
||||
}
|
||||
|
||||
// (US INTERN) Actualitza el botó actualment polsat (keypress) desde jgame
|
||||
void updatePadBtnPressed(const int8_t btn)
|
||||
{
|
||||
pad_btn_pressed = btn;
|
||||
}
|
||||
|
||||
// Torna la posició X actual del ratolí
|
||||
const int mouseX()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user