Compact laser firing code

This commit is contained in:
Kp 2016-02-27 19:02:21 +00:00
parent 901a554e96
commit 788ed1bd70

View file

@ -1495,40 +1495,35 @@ void GameProcessFrame(void)
if (allowed_to_fire_laser()) if (allowed_to_fire_laser())
FireLaser(); // Fire Laser! FireLaser(); // Fire Laser!
auto laser_firing_count = Global_laser_firing_count;
if (Auto_fire_fusion_cannon_time) { if (Auto_fire_fusion_cannon_time) {
if (Primary_weapon != primary_weapon_index_t::FUSION_INDEX) if (Primary_weapon != primary_weapon_index_t::FUSION_INDEX)
Auto_fire_fusion_cannon_time = 0; 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; Auto_fire_fusion_cannon_time = 0;
Global_laser_firing_count = 1;
} else if (d_tick_step) { } else if (d_tick_step) {
fix bump_amount; const auto rx = (d_rand() - 16384) / 8;
const auto rz = (d_rand() - 16384) / 8;
Global_laser_firing_count = 0; const auto &&console = vobjptr(ConsoleObject);
auto &rotvel = console->mtype.phys_info.rotvel;
ConsoleObject->mtype.phys_info.rotvel.x += (d_rand() - 16384)/8; rotvel.x += rx;
ConsoleObject->mtype.phys_info.rotvel.z += (d_rand() - 16384)/8; rotvel.z += rz;
const auto rand_vec = make_random_vector(); const auto rand_vec = make_random_vector();
bump_amount = F1_0*4; const auto bump_amount = Fusion_charge > F1_0*2 ? Fusion_charge*4 : F1_0*4;
bump_one_object(console, rand_vec, bump_amount);
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;
} }
} }
if (Global_laser_firing_count) if (laser_firing_count)
Global_laser_firing_count -= do_laser_firing_player(); {
laser_firing_count -= do_laser_firing_player();
if (Global_laser_firing_count < 0) if (laser_firing_count < 0)
Global_laser_firing_count = 0; laser_firing_count = 0;
}
Global_laser_firing_count = laser_firing_count;
delayed_autoselect(); delayed_autoselect();
} }