From cf7a82515d1e207eb8e6ab355fa39d027ac8fdc1 Mon Sep 17 00:00:00 2001 From: Layla Marchant Date: Mon, 27 Jul 2020 11:41:40 -0400 Subject: [PATCH] Fixed double-controls. --- src/engine.c | 13 +-- src/engine.h | 2 + src/player.c | 257 +++++++++++++++++++++++++++------------------------ 3 files changed, 145 insertions(+), 127 deletions(-) diff --git a/src/engine.c b/src/engine.c index f159258..64e52ea 100644 --- a/src/engine.c +++ b/src/engine.c @@ -266,7 +266,6 @@ void engine_setMode() int radioLife = DEFAULT_RADIO_LIFE; char lang[STRMAX_SHORT]; int i; - int use_gc; strcpy(lang, "default"); @@ -333,22 +332,24 @@ void engine_setMode() SDL_EventState(SDL_MOUSEMOTION, SDL_DISABLE); // Determine if the GameController API can be used - use_gc = 1; + engine.useController = 1; for (i=0; i= 16384; - if (joyleft != prevjoyleft) - engine.keyState[KEY_LEFT] = prevjoyleft = joyleft; - if (joyright != prevjoyright) - engine.keyState[KEY_RIGHT] = prevjoyright = joyright; - } else if (engine.event.jaxis.axis == 1) { - joyup = engine.event.jaxis.value < -16384; - joydown = engine.event.jaxis.value >= 16384; - if (joyup != prevjoyup) - engine.keyState[KEY_UP] = prevjoyup = joyup; - if (joydown != prevjoydown) - engine.keyState[KEY_DOWN] = prevjoydown = joydown; - } - } else { - val = MIN(1, (double)(abs(engine.event.jaxis.value)) / JS_MAX); - if (val < JS_DEADZONE) - val = 0; + if (!engine.useController) + { + if (engine.gameSection == SECTION_TITLE) { + if (engine.event.jaxis.axis == 0) { + joyleft = engine.event.jaxis.value < -16384; + joyright = engine.event.jaxis.value >= 16384; + if (joyleft != prevjoyleft) + engine.keyState[KEY_LEFT] = prevjoyleft = joyleft; + if (joyright != prevjoyright) + engine.keyState[KEY_RIGHT] = prevjoyright = joyright; + } else if (engine.event.jaxis.axis == 1) { + joyup = engine.event.jaxis.value < -16384; + joydown = engine.event.jaxis.value >= 16384; + if (joyup != prevjoyup) + engine.keyState[KEY_UP] = prevjoyup = joyup; + if (joydown != prevjoydown) + engine.keyState[KEY_DOWN] = prevjoydown = joydown; + } + } else { + val = MIN(1, (double)(abs(engine.event.jaxis.value)) / JS_MAX); + if (val < JS_DEADZONE) + val = 0; - if (engine.event.jaxis.axis == 0) - engine.xaxis = copysign(val, engine.event.jaxis.value); - else if (engine.event.jaxis.axis == 1) - engine.yaxis = copysign(val, engine.event.jaxis.value); + if (engine.event.jaxis.axis == 0) + engine.xaxis = copysign(val, engine.event.jaxis.value); + else if (engine.event.jaxis.axis == 1) + engine.yaxis = copysign(val, engine.event.jaxis.value); + } } break; case SDL_CONTROLLERAXISMOTION: - if (engine.gameSection == SECTION_TITLE) { - if (engine.event.caxis.axis == SDL_CONTROLLER_AXIS_LEFTX) - { - joyleft = engine.event.caxis.value < -16384; - joyright = engine.event.caxis.value >= 16384; - if (joyleft != prevjoyleft) - engine.keyState[KEY_LEFT] = prevjoyleft = joyleft; - if (joyright != prevjoyright) - engine.keyState[KEY_RIGHT] = prevjoyright = joyright; - } - else if (engine.event.caxis.axis == SDL_CONTROLLER_AXIS_LEFTY) - { - joyup = engine.event.caxis.value < -16384; - joydown = engine.event.caxis.value >= 16384; - if (joyup != prevjoyup) - engine.keyState[KEY_UP] = prevjoyup = joyup; - if (joydown != prevjoydown) - engine.keyState[KEY_DOWN] = prevjoydown = joydown; - } - } else { - val = MIN(1, (double)(abs(engine.event.caxis.value)) / JS_MAX); - if (val < JS_DEADZONE) - val = 0; + if (engine.useController) + { + if (engine.gameSection == SECTION_TITLE) { + if (engine.event.caxis.axis == SDL_CONTROLLER_AXIS_LEFTX) + { + joyleft = engine.event.caxis.value < -16384; + joyright = engine.event.caxis.value >= 16384; + if (joyleft != prevjoyleft) + engine.keyState[KEY_LEFT] = prevjoyleft = joyleft; + if (joyright != prevjoyright) + engine.keyState[KEY_RIGHT] = prevjoyright = joyright; + } + else if (engine.event.caxis.axis == SDL_CONTROLLER_AXIS_LEFTY) + { + joyup = engine.event.caxis.value < -16384; + joydown = engine.event.caxis.value >= 16384; + if (joyup != prevjoyup) + engine.keyState[KEY_UP] = prevjoyup = joyup; + if (joydown != prevjoydown) + engine.keyState[KEY_DOWN] = prevjoydown = joydown; + } + } else { + val = MIN(1, (double)(abs(engine.event.caxis.value)) / JS_MAX); + if (val < JS_DEADZONE) + val = 0; - if (engine.event.caxis.axis == SDL_CONTROLLER_AXIS_LEFTX) - engine.xaxis = copysign(val, engine.event.caxis.value); - else if (engine.event.caxis.axis == SDL_CONTROLLER_AXIS_LEFTY) - engine.yaxis = copysign(val, engine.event.caxis.value); + if (engine.event.caxis.axis == SDL_CONTROLLER_AXIS_LEFTX) + engine.xaxis = copysign(val, engine.event.caxis.value); + else if (engine.event.caxis.axis == SDL_CONTROLLER_AXIS_LEFTY) + engine.yaxis = copysign(val, engine.event.caxis.value); + } } break;