From 9a5076bb930605b5aba4a49f9a4ae692581dfc50 Mon Sep 17 00:00:00 2001 From: Layla Marchant Date: Thu, 16 Jul 2020 11:43:45 -0400 Subject: [PATCH] Fixed some bugs with gamepad controls. Included a bug where axis controls got stuck after the end of a mission, and one where hat controls caused massive movement speed. --- src/player.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/player.c b/src/player.c index 42d5ca1..4582994 100644 --- a/src/player.c +++ b/src/player.c @@ -310,10 +310,10 @@ void player_getInput() break; case SDL_JOYHATMOTION: - engine.keyState[KEY_UP] = engine.event.jhat.value & SDL_HAT_UP; - engine.keyState[KEY_DOWN] = engine.event.jhat.value & SDL_HAT_DOWN; - engine.keyState[KEY_LEFT] = engine.event.jhat.value & SDL_HAT_LEFT; - engine.keyState[KEY_RIGHT] = engine.event.jhat.value & SDL_HAT_RIGHT; + engine.keyState[KEY_UP] = (engine.event.jhat.value & SDL_HAT_UP ? 1 : 0); + engine.keyState[KEY_DOWN] = (engine.event.jhat.value & SDL_HAT_DOWN ? 1 : 0); + engine.keyState[KEY_LEFT] = (engine.event.jhat.value & SDL_HAT_LEFT ? 1 : 0); + engine.keyState[KEY_RIGHT] = (engine.event.jhat.value & SDL_HAT_RIGHT ? 1 : 0); break; case SDL_JOYAXISMOTION: @@ -389,6 +389,8 @@ void player_leaveSector() engine.keyState[KEY_RIGHT] = 0; engine.keyState[KEY_FIRE] = 0; engine.keyState[KEY_ALTFIRE] = 0; + engine.xaxis = 0; + engine.yaxis = 0; if (engine.done == ENGINE_RUNNING) engine.done = ENGINE_FORMATION;