From 788ed1bd7066d2c52e4eed070ad0bf07ccb24024 Mon Sep 17 00:00:00 2001 From: Kp Date: Sat, 27 Feb 2016 19:02:21 +0000 Subject: [PATCH] Compact laser firing code --- similar/main/game.cpp | 41 ++++++++++++++++++----------------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/similar/main/game.cpp b/similar/main/game.cpp index 2262aa982..35683e186 100644 --- a/similar/main/game.cpp +++ b/similar/main/game.cpp @@ -1495,40 +1495,35 @@ void GameProcessFrame(void) if (allowed_to_fire_laser()) FireLaser(); // Fire Laser! + auto laser_firing_count = Global_laser_firing_count; if (Auto_fire_fusion_cannon_time) { if (Primary_weapon != primary_weapon_index_t::FUSION_INDEX) Auto_fire_fusion_cannon_time = 0; - else if (GameTime64 + FrameTime/2 >= Auto_fire_fusion_cannon_time) { + else if ((laser_firing_count = (GameTime64 + FrameTime/2 >= Auto_fire_fusion_cannon_time))) + { Auto_fire_fusion_cannon_time = 0; - Global_laser_firing_count = 1; } else if (d_tick_step) { - fix bump_amount; - - Global_laser_firing_count = 0; - - ConsoleObject->mtype.phys_info.rotvel.x += (d_rand() - 16384)/8; - ConsoleObject->mtype.phys_info.rotvel.z += (d_rand() - 16384)/8; + const auto rx = (d_rand() - 16384) / 8; + const auto rz = (d_rand() - 16384) / 8; + const auto &&console = vobjptr(ConsoleObject); + auto &rotvel = console->mtype.phys_info.rotvel; + rotvel.x += rx; + rotvel.z += rz; const auto rand_vec = make_random_vector(); - bump_amount = F1_0*4; - - if (Fusion_charge > F1_0*2) - bump_amount = Fusion_charge*4; - - bump_one_object(vobjptr(ConsoleObject), rand_vec, bump_amount); - } - else - { - Global_laser_firing_count = 0; + const auto bump_amount = Fusion_charge > F1_0*2 ? Fusion_charge*4 : F1_0*4; + bump_one_object(console, rand_vec, bump_amount); } } - if (Global_laser_firing_count) - Global_laser_firing_count -= do_laser_firing_player(); - - if (Global_laser_firing_count < 0) - Global_laser_firing_count = 0; + if (laser_firing_count) + { + laser_firing_count -= do_laser_firing_player(); + if (laser_firing_count < 0) + laser_firing_count = 0; + } + Global_laser_firing_count = laser_firing_count; delayed_autoselect(); }