From be830d28d72235a713ab432ab170c77a94e2124d Mon Sep 17 00:00:00 2001 From: walkawayy <81546780+walkawayy@users.noreply.github.com> Date: Tue, 11 Jan 2022 13:35:44 -0500 Subject: [PATCH] input: allow holding down forward/back to move through saves Resolves #171. --- src/game/input.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/game/input.c b/src/game/input.c index cd5e74221..3b397a5ed 100644 --- a/src/game/input.c +++ b/src/game/input.c @@ -2,16 +2,38 @@ #include "specific/s_input.h" +#define DELAY_FRAMES 12 +#define HOLD_FRAMES 3 + INPUT_STATE g_Input = { 0 }; INPUT_STATE g_InputDB = { 0 }; INPUT_STATE g_OldInputDB = { 0 }; +static int32_t m_HoldBack = 0; +static int32_t m_HoldForward = 0; + static INPUT_STATE Input_GetDebounced(INPUT_STATE input); INPUT_STATE Input_GetDebounced(INPUT_STATE input) { INPUT_STATE result; result.any = input.any & ~g_OldInputDB.any; + + // Allow holding down key to move faster + if (input.forward || !input.back) { + m_HoldBack = 0; + } else if (input.back && ++m_HoldBack >= DELAY_FRAMES + HOLD_FRAMES) { + result.back = 1; + m_HoldBack = DELAY_FRAMES; + } + + if (!input.forward || input.back) { + m_HoldForward = 0; + } else if (input.forward && ++m_HoldForward >= DELAY_FRAMES + HOLD_FRAMES) { + result.forward = 1; + m_HoldForward = DELAY_FRAMES; + } + g_OldInputDB = input; return result; }