From 7c01143a60cae2c6e95853419cbc27af1ca3ec2d Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Thu, 18 Dec 2025 02:12:56 +0100 Subject: [PATCH] more controller fixes --- control.cpp | 36 +++++++++++++++++------------------- multi.cpp | 14 +++++++------- 2 files changed, 24 insertions(+), 26 deletions(-) diff --git a/control.cpp b/control.cpp index f9d2fdfa..ae70d92b 100644 --- a/control.cpp +++ b/control.cpp @@ -255,7 +255,7 @@ EX bool gjoy_button(joydata &jd, int button) { return SDL_JoystickGetButton(jd.joy, button); } -EX bool gjoy_axis(joydata &jd, int axis) { +EX int gjoy_axis(joydata &jd, int axis) { #if SDLVER >= 2 if(jd.gc) return SDL_GameControllerGetAxis(jd.gc, (SDL_GameControllerAxis) axis); #endif @@ -291,6 +291,13 @@ EX int gjoy_buttons(joydata& jd) { return SDL_GetNumJoystickButtons(jd.joy); } +EX int gjoy_axes(joydata& jd) { + #if SDLVER >= 2 + if(jd.gc) return 6; + #endif + return SDL_GetNumJoystickButtons(jd.joy); + } + EX int gjoy_hats(joydata& jd) { #if SDLVER >= 2 if(jd.gc) return 0; @@ -1339,24 +1346,15 @@ EX void handle_event(SDL_Event& ev) { #if SDLVER >= 2 if(ev.type == SDL_CONTROLLERAXISMOTION && normal && DEFAULTCONTROL) { - if(ev.caxis.which == 0) { - if(ev.caxis.axis == 0) - joyx = ev.caxis.value; - else if(ev.caxis.axis == 1) - joyy = ev.caxis.value; - else if(ev.caxis.axis == 2) - panjoyx = ev.caxis.value; - else if(ev.caxis.axis == 3) - panjoyy = ev.caxis.value; - checkjoy(); - // printf("panjoy = %d,%d\n", panjoyx, panjoyy); - } - else { - if(ev.caxis.axis == 0) - panjoyx = ev.caxis.value; - else - panjoyy = ev.caxis.value; - } + if(ev.caxis.axis == 0) + joyx = ev.caxis.value; + else if(ev.caxis.axis == 1) + joyy = ev.caxis.value; + else if(ev.caxis.axis == 2) + panjoyx = ev.caxis.value; + else if(ev.caxis.axis == 3) + panjoyy = ev.caxis.value; + checkjoy(); } #endif diff --git a/multi.cpp b/multi.cpp index b952a5a2..f3aa8d5a 100644 --- a/multi.cpp +++ b/multi.cpp @@ -388,7 +388,7 @@ struct joy_configurer { numaxeconfigs = 0; int j = 0; for(auto& s: sticks) { - for(int ax=0; ax dz) value -= dz; else if(value < -dz) value += dz; else value = 0;