Fixed player turn bug
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user