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