From e53775b97fd9ab1ed93bffa7752da71c54ee0724 Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Fri, 26 Jun 2026 14:24:13 -0500 Subject: [PATCH] Fixed player turn bug --- src/dusk/rpg/entity/player.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/dusk/rpg/entity/player.c b/src/dusk/rpg/entity/player.c index 8a8b8265..521b9e59 100644 --- a/src/dusk/rpg/entity/player.c +++ b/src/dusk/rpg/entity/player.c @@ -33,14 +33,25 @@ void playerInput(entity_t *entity) { // Can player act? if(UI_FOCUS.count > 0) return; - // Turn + // Turn - only if not already holding the direction we face const playerinputdirmap_t *dirMap = PLAYER_INPUT_DIR_MAP; + bool_t holdingFaced = false; do { if(!inputIsDown(dirMap->action)) continue; - if(entity->direction == dirMap->direction) continue; - return entityTurn(entity, dirMap->direction); + if(entity->direction != dirMap->direction) continue; + holdingFaced = true; + break; } while((++dirMap)->action != 0xFF); + if(!holdingFaced) { + dirMap = PLAYER_INPUT_DIR_MAP; + do { + if(!inputIsDown(dirMap->action)) continue; + if(entity->direction == dirMap->direction) continue; + return entityTurn(entity, dirMap->direction); + } while((++dirMap)->action != 0xFF); + } + // Walk / Run bool_t running = inputIsDown(INPUT_ACTION_CANCEL); dirMap = PLAYER_INPUT_DIR_MAP;