diff --git a/src/g_game.c b/src/g_game.c index 512eb8667..34c9c5287 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -438,10 +438,10 @@ consvar_t cv_shrinkme[MAXSPLITSCREENPLAYERS] = { static CV_PossibleValue_t zerotoone_cons_t[] = {{0, "MIN"}, {FRACUNIT, "MAX"}, {0, NULL}}; consvar_t cv_deadzone[MAXSPLITSCREENPLAYERS] = { - CVAR_INIT ("joy_deadzone", "0.125", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL), - CVAR_INIT ("joy2_deadzone", "0.125", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL), - CVAR_INIT ("joy3_deadzone", "0.125", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL), - CVAR_INIT ("joy4_deadzone", "0.125", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL) + CVAR_INIT ("deadzone", "0.25", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL), + CVAR_INIT ("deadzone2", "0.25", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL), + CVAR_INIT ("deadzone3", "0.25", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL), + CVAR_INIT ("deadzone4", "0.25", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL) }; // now automatically allocated in D_RegisterClientCommands diff --git a/src/sdl/i_system.cpp b/src/sdl/i_system.cpp index f93a02300..d9451146d 100644 --- a/src/sdl/i_system.cpp +++ b/src/sdl/i_system.cpp @@ -1177,7 +1177,7 @@ static UINT64 lastjoyhats[MAXSPLITSCREENPLAYERS] = {0,0,0,0}; */ void I_ShutdownJoystick(UINT8 index) { - INT32 i; + INT32 i, j; event_t event; event.type=ev_keyup; event.data2 = 0; @@ -1186,22 +1186,25 @@ void I_ShutdownJoystick(UINT8 index) lastjoybuttons[index] = lastjoyhats[index] = 0; // emulate the up of all joystick buttons - for (i=0;i (JOYAXISRANGE/2)) - raxis = 1; - else - raxis = 0; - } + // gamepad control type, on or off, live or die + if (raxis < -(JOYAXISRANGE/2)) + raxis = -1; + else if (raxis > (JOYAXISRANGE/2)) + raxis = 1; else - { - raxis = JoyInfo[pid].scale!=1?((raxis/JoyInfo[pid].scale)*JoyInfo[pid].scale):raxis; + raxis = 0; + } + else + { + raxis = (JoyInfo[pid].scale != 1) ? ((raxis / JoyInfo[pid].scale) * JoyInfo[pid].scale) : raxis; #ifdef SDL_JDEADZONE - if (-SDL_JDEADZONE <= raxis && raxis <= SDL_JDEADZONE) - raxis = 0; + if (-SDL_JDEADZONE <= raxis && raxis <= SDL_JDEADZONE) + raxis = 0; #endif - } } return raxis; @@ -802,15 +799,14 @@ static void Impl_HandleControllerAxisEvent(SDL_ControllerAxisEvent evt) event.type = ev_joystick; - event.data1 = event.data2 = event.data3 = INT32_MAX; - event.device = 1 + evt.which; - if (event.device == INT32_MAX) { return; } + event.data1 = event.data2 = event.data3 = INT32_MAX; + //axis switch (evt.axis) { @@ -837,7 +833,7 @@ static void Impl_HandleControllerAxisEvent(SDL_ControllerAxisEvent evt) } //value - event.data2 = SDLJoyAxis(evt.value, event.type, event.device); + event.data2 = SDLJoyAxis(evt.value, 0); // TODO: replace 0 with pid D_PostEvent(&event); }