diff --git a/engine.c b/engine.c index 94027a5..914cdd6 100644 --- a/engine.c +++ b/engine.c @@ -225,23 +225,6 @@ void engine_init(void) { } void engine_update(uint8_t keys, uint8_t prev_keys) { - uint8_t keys_pressed = keys & ~prev_keys; - - if (keys_pressed) { - das_timer = DAS_DELAY; - das_active = 1; - } else if (keys && das_active) { - if (das_timer > 0) { - das_timer--; - } - if (das_timer == 0 && !is_moving) { - das_timer = DAS_REPEAT; - keys_pressed = keys; // trigger move - } - } else { - das_active = 0; - } - if (is_moving) { move_progress++; @@ -279,6 +262,26 @@ void engine_update(uint8_t keys, uint8_t prev_keys) { // Set player to idle stand frame update_player_sprite(); } + } + + uint8_t keys_pressed = keys & ~prev_keys; + + if (keys_pressed) { + das_timer = DAS_DELAY; + das_active = 1; + } else if (keys && das_active) { + if (das_timer > 0) { + das_timer--; + } + if (das_timer == 0 && !is_moving) { + das_timer = DAS_REPEAT; + keys_pressed = keys; // trigger move + } + } else { + das_active = 0; + } + + if (is_moving) { return; // Ignore other inputs while moving }