Fixed player turn bug

This commit is contained in:
2026-06-26 14:24:13 -05:00
parent d326f6c1ac
commit e53775b97f
+14 -3
View File
@@ -33,14 +33,25 @@ void playerInput(entity_t *entity) {
// Can player act? // Can player act?
if(UI_FOCUS.count > 0) return; 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; const playerinputdirmap_t *dirMap = PLAYER_INPUT_DIR_MAP;
bool_t holdingFaced = false;
do { do {
if(!inputIsDown(dirMap->action)) continue; if(!inputIsDown(dirMap->action)) continue;
if(entity->direction == dirMap->direction) continue; if(entity->direction != dirMap->direction) continue;
return entityTurn(entity, dirMap->direction); holdingFaced = true;
break;
} while((++dirMap)->action != 0xFF); } 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 // Walk / Run
bool_t running = inputIsDown(INPUT_ACTION_CANCEL); bool_t running = inputIsDown(INPUT_ACTION_CANCEL);
dirMap = PLAYER_INPUT_DIR_MAP; dirMap = PLAYER_INPUT_DIR_MAP;