From e95db4c269f3d8f5bc9704e34ffb0e619bc4ac9f Mon Sep 17 00:00:00 2001 From: Kp Date: Sat, 29 Oct 2016 23:16:17 +0000 Subject: [PATCH] Fold move_away_from_player switch cases --- similar/main/ai.cpp | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/similar/main/ai.cpp b/similar/main/ai.cpp index 928873d39..95de9dd1d 100644 --- a/similar/main/ai.cpp +++ b/similar/main/ai.cpp @@ -1336,31 +1336,16 @@ static void move_around_player(const vobjptridx_t objp, const player_flags power static void move_away_from_player(const vobjptridx_t objp, const vms_vector &vec_to_player, int attack_type) { physics_info *pptr = &objp->mtype.phys_info; - int objref; - pptr->velocity.x -= fixmul(vec_to_player.x, FrameTime*16); - pptr->velocity.y -= fixmul(vec_to_player.y, FrameTime*16); - pptr->velocity.z -= fixmul(vec_to_player.z, FrameTime*16); + const auto frametime = FrameTime; + pptr->velocity.x -= fixmul(vec_to_player.x, frametime*16); + pptr->velocity.y -= fixmul(vec_to_player.y, frametime*16); + pptr->velocity.z -= fixmul(vec_to_player.z, frametime*16); if (attack_type) { // Get value in 0..3 to choose evasion direction. - objref = ((objp) ^ ((d_tick_count + 3*(objp)) >> 5)) & 3; - - switch (objref) { - case 0: - vm_vec_scale_add2(pptr->velocity, objp->orient.uvec, FrameTime << 5); - break; - case 1: - vm_vec_scale_add2(pptr->velocity, objp->orient.uvec, -FrameTime << 5); - break; - case 2: - vm_vec_scale_add2(pptr->velocity, objp->orient.rvec, FrameTime << 5); - break; - case 3: - vm_vec_scale_add2(pptr->velocity, objp->orient.rvec, -FrameTime << 5); - break; - default: Int3(); // Impossible, bogus value on objref, must be in 0..3 - } + const int objref = objp ^ ((d_tick_count + 3 * objp) >> 5); + vm_vec_scale_add2(pptr->velocity, (objref & 2) ? objp->orient.rvec : objp->orient.uvec, ((objref & 1) ? -frametime : frametime) << 5); }