diff --git a/feely_pona.cpp b/feely_pona.cpp index 4f76e33..c898571 100644 --- a/feely_pona.cpp +++ b/feely_pona.cpp @@ -470,6 +470,10 @@ void FP_EntityActionStateMachine(FP_Game *game, TELY_PlatformInput *input, FP_Ga action->next_state = FP_EntitySmoochieState_Run; } } + + if (entity_has_velocity) { + action->next_state = FP_EntitySmoochieState_Run; + } } break; case FP_EntitySmoochieState_AttackDown: { @@ -681,6 +685,11 @@ void FP_Update(TELY_Platform *platform, FP_Game *game, TELY_PlatformInput *input entity->direction = dir_vector.y > 0.f ? FP_GameDirection_Down : FP_GameDirection_Up; } } + } else { + if (entity->velocity.x) + entity->direction = entity->velocity.x > 0.f ? FP_GameDirection_Right : FP_GameDirection_Left; + else if (entity->velocity.y) + entity->direction = entity->velocity.y > 0.f ? FP_GameDirection_Down : FP_GameDirection_Up; } // NOTE: Determine AI movement ============================================================= @@ -743,7 +752,7 @@ void FP_Update(TELY_Platform *platform, FP_Game *game, TELY_PlatformInput *input // NOTE: We haven't arrived yet, calculate an acceleration vector to the waypoint if (dist_to_waypoint_sq > DQN_SQUARED(arrival_threshold)) { Dqn_V2 entity_to_waypoint_norm = Dqn_V2_Normalise(entity_to_waypoint); - acceleration_meters_per_s = entity_to_waypoint_norm * 4.f; + acceleration_meters_per_s = entity_to_waypoint_norm * 2.f; break; } diff --git a/feely_pona_game.cpp b/feely_pona_game.cpp index b1692cd..0c430a9 100644 --- a/feely_pona_game.cpp +++ b/feely_pona_game.cpp @@ -345,11 +345,9 @@ static Dqn_V2 FP_Game_CalcEntityWorldPos(FP_Game const *game, FP_GameEntityHandl if (!game) return result; - for (FP_GameEntity const *entity = FP_Game_GetEntity(DQN_CAST(FP_Game *) game, handle); - entity != game->root_entity; - entity = entity->parent) { + FP_GameEntity const *first = FP_Game_GetEntity(DQN_CAST(FP_Game *) game, handle); + for (FP_GameEntity const *entity = first; entity != game->root_entity; entity = entity->parent) result += entity->local_pos; - } return result; }