From 4ba8444fc8892a3ac7c311f48e9095109a59d988 Mon Sep 17 00:00:00 2001 From: Kp Date: Sun, 3 Nov 2013 22:51:01 +0000 Subject: [PATCH] Use helper to read axis fields --- similar/main/kconfig.cpp | 101 +++++++++++---------------------------- 1 file changed, 29 insertions(+), 72 deletions(-) diff --git a/similar/main/kconfig.cpp b/similar/main/kconfig.cpp index 42d96ee07..d037022b8 100644 --- a/similar/main/kconfig.cpp +++ b/similar/main/kconfig.cpp @@ -1271,6 +1271,16 @@ void kconfig(int n, const char * title) } } +template +static void adjust_axis_field(fix& time, const fix (&axes)[N], unsigned value, unsigned invert, int sensitivity) +{ + fix amount = (axes[value]*sensitivity)/8; + if ( !invert ) // If not inverted... + time -= amount; + else + time += amount; +} + void kconfig_read_controls(d_event *event, int automap_flag) { int i = 0, j = 0, speed_factor = cheats.turbo?2:1; @@ -1464,15 +1474,9 @@ void kconfig_read_controls(d_event *event, int automap_flag) else Controls.key_pitch_backward_down_time = 0; // From joystick... - if ( !kc_joystick[14].value ) // If not inverted... - Controls.pitch_time -= (Controls.joy_axis[kc_joystick[13].value]*PlayerCfg.JoystickSens[1])/8; - else - Controls.pitch_time += (Controls.joy_axis[kc_joystick[13].value]*PlayerCfg.JoystickSens[1])/8; + adjust_axis_field(Controls.pitch_time, Controls.joy_axis, kc_joystick[13].value, kc_joystick[14].value, PlayerCfg.JoystickSens[1]); // From mouse... - if ( !kc_mouse[14].value ) // If not inverted... - Controls.pitch_time -= (Controls.mouse_axis[kc_mouse[13].value]*PlayerCfg.MouseSens[1])/8; - else - Controls.pitch_time += (Controls.mouse_axis[kc_mouse[13].value]*PlayerCfg.MouseSens[1])/8; + adjust_axis_field(Controls.pitch_time, Controls.mouse_axis, kc_mouse[13].value, kc_mouse[14].value, PlayerCfg.MouseSens[1]); } else Controls.pitch_time = 0; @@ -1498,15 +1502,10 @@ void kconfig_read_controls(d_event *event, int automap_flag) else Controls.key_pitch_backward_down_time = 0; // From joystick... - if ( !kc_joystick[20].value /*!kc_joystick[14].value*/ ) // If not inverted... NOTE: Use Slide U/D invert setting - Controls.vertical_thrust_time += (Controls.joy_axis[kc_joystick[13].value]*PlayerCfg.JoystickSens[3])/8; - else - Controls.vertical_thrust_time -= (Controls.joy_axis[kc_joystick[13].value]*PlayerCfg.JoystickSens[3])/8; + // NOTE: Use Slide U/D invert setting + adjust_axis_field(Controls.vertical_thrust_time, Controls.joy_axis, kc_joystick[13].value, !kc_joystick[20].value, PlayerCfg.JoystickSens[3]); // From mouse... - if ( !kc_mouse[20].value /*!kc_mouse[14].value*/ ) // If not inverted... NOTE: Use Slide U/D invert setting - Controls.vertical_thrust_time -= (Controls.mouse_axis[kc_mouse[13].value]*PlayerCfg.MouseSens[3])/8; - else - Controls.vertical_thrust_time += (Controls.mouse_axis[kc_mouse[13].value]*PlayerCfg.MouseSens[3])/8; + adjust_axis_field(Controls.vertical_thrust_time, Controls.mouse_axis, kc_mouse[13].value, kc_mouse[20].value, PlayerCfg.MouseSens[3]); } // From keyboard... if ( Controls.key_slide_up_state ) @@ -1529,15 +1528,9 @@ void kconfig_read_controls(d_event *event, int automap_flag) if ( Controls.btn_slide_up_state ) Controls.vertical_thrust_time += speed_factor*FrameTime; if ( Controls.btn_slide_down_state ) Controls.vertical_thrust_time -= speed_factor*FrameTime; // From joystick... - if ( !kc_joystick[20].value ) // If not inverted... - Controls.vertical_thrust_time += (Controls.joy_axis[kc_joystick[19].value]*PlayerCfg.JoystickSens[3])/8; - else - Controls.vertical_thrust_time -= (Controls.joy_axis[kc_joystick[19].value]*PlayerCfg.JoystickSens[3])/8; + adjust_axis_field(Controls.vertical_thrust_time, Controls.joy_axis, kc_joystick[19].value, !kc_joystick[20].value, PlayerCfg.JoystickSens[3]); // From mouse... - if ( !kc_mouse[20].value ) // If not inverted... - Controls.vertical_thrust_time += (Controls.mouse_axis[kc_mouse[19].value]*PlayerCfg.MouseSens[3])/8; - else - Controls.vertical_thrust_time -= (Controls.mouse_axis[kc_mouse[19].value]*PlayerCfg.MouseSens[3])/8; + adjust_axis_field(Controls.vertical_thrust_time, Controls.mouse_axis, kc_mouse[19].value, !kc_mouse[20].value, PlayerCfg.MouseSens[3]); //---------- Read heading_time ----------- if (!Controls.slide_on_state && !Controls.bank_on_state) @@ -1560,15 +1553,9 @@ void kconfig_read_controls(d_event *event, int automap_flag) else Controls.key_heading_left_down_time = 0; // From joystick... - if ( !kc_joystick[16].value ) // If not inverted... - Controls.heading_time += (Controls.joy_axis[kc_joystick[15].value]*PlayerCfg.JoystickSens[0])/8; - else - Controls.heading_time -= (Controls.joy_axis[kc_joystick[15].value]*PlayerCfg.JoystickSens[0])/8; + adjust_axis_field(Controls.heading_time, Controls.joy_axis, kc_joystick[15].value, !kc_joystick[16].value, PlayerCfg.JoystickSens[0]); // From mouse... - if ( !kc_mouse[16].value ) // If not inverted... - Controls.heading_time += (Controls.mouse_axis[kc_mouse[15].value]*PlayerCfg.MouseSens[0])/8; - else - Controls.heading_time -= (Controls.mouse_axis[kc_mouse[15].value]*PlayerCfg.MouseSens[0])/8; + adjust_axis_field(Controls.heading_time, Controls.mouse_axis, kc_mouse[15].value, !kc_mouse[16].value, PlayerCfg.MouseSens[0]); } else Controls.heading_time = 0; @@ -1593,15 +1580,9 @@ void kconfig_read_controls(d_event *event, int automap_flag) else Controls.key_heading_left_down_time = 0; // From joystick... - if ( !kc_joystick[18].value /*!kc_joystick[16].value*/ ) // If not inverted... NOTE: Use Slide L/R invert setting - Controls.sideways_thrust_time += (Controls.joy_axis[kc_joystick[15].value]*PlayerCfg.JoystickSens[2])/8; - else - Controls.sideways_thrust_time -= (Controls.joy_axis[kc_joystick[15].value]*PlayerCfg.JoystickSens[2])/8; + adjust_axis_field(Controls.sideways_thrust_time, Controls.joy_axis, kc_joystick[15].value, !kc_joystick[18].value, PlayerCfg.JoystickSens[2]); // From mouse... - if ( !kc_mouse[18].value /*!kc_mouse[16].value*/ ) // If not inverted... NOTE: Use Slide L/R invert setting - Controls.sideways_thrust_time += (Controls.mouse_axis[kc_mouse[15].value]*PlayerCfg.MouseSens[2])/8; - else - Controls.sideways_thrust_time -= (Controls.mouse_axis[kc_mouse[15].value]*PlayerCfg.MouseSens[2])/8; + adjust_axis_field(Controls.sideways_thrust_time, Controls.mouse_axis, kc_mouse[15].value, !kc_mouse[18].value, PlayerCfg.MouseSens[2]); } // From keyboard... if ( Controls.key_slide_right_state ) @@ -1624,15 +1605,9 @@ void kconfig_read_controls(d_event *event, int automap_flag) if ( Controls.btn_slide_left_state ) Controls.sideways_thrust_time -= speed_factor*FrameTime; if ( Controls.btn_slide_right_state ) Controls.sideways_thrust_time += speed_factor*FrameTime; // From joystick... - if ( !kc_joystick[18].value ) // If not inverted... - Controls.sideways_thrust_time += (Controls.joy_axis[kc_joystick[17].value]*PlayerCfg.JoystickSens[2])/8; - else - Controls.sideways_thrust_time -= (Controls.joy_axis[kc_joystick[17].value]*PlayerCfg.JoystickSens[2])/8; + adjust_axis_field(Controls.sideways_thrust_time, Controls.joy_axis, kc_joystick[17].value, !kc_joystick[18].value, PlayerCfg.JoystickSens[2]); // From mouse... - if ( !kc_mouse[18].value ) // If not inverted... - Controls.sideways_thrust_time += (Controls.mouse_axis[kc_mouse[17].value]*PlayerCfg.MouseSens[2])/8; - else - Controls.sideways_thrust_time -= (Controls.mouse_axis[kc_mouse[17].value]*PlayerCfg.MouseSens[2])/8; + adjust_axis_field(Controls.sideways_thrust_time, Controls.mouse_axis, kc_mouse[17].value, !kc_mouse[18].value, PlayerCfg.MouseSens[2]); //----------- Read bank_time ----------------- if ( Controls.bank_on_state ) @@ -1655,15 +1630,9 @@ void kconfig_read_controls(d_event *event, int automap_flag) else Controls.key_heading_right_down_time = 0; // From joystick... - if ( !kc_joystick[22].value /*!kc_joystick[16].value*/ ) // If not inverted... NOTE: Use Bank L/R invert setting - Controls.bank_time -= (Controls.joy_axis[kc_joystick[15].value]*PlayerCfg.JoystickSens[4])/8; - else - Controls.bank_time += (Controls.joy_axis[kc_joystick[15].value]*PlayerCfg.JoystickSens[4])/8; + adjust_axis_field(Controls.bank_time, Controls.joy_axis, kc_joystick[15].value, kc_joystick[22].value, PlayerCfg.JoystickSens[4]); // From mouse... - if ( !kc_mouse[22].value /*!kc_mouse[16].value*/ ) // If not inverted... NOTE: Use Bank L/R invert setting - Controls.bank_time += (Controls.mouse_axis[kc_mouse[15].value]*PlayerCfg.MouseSens[4])/8; - else - Controls.bank_time -= (Controls.mouse_axis[kc_mouse[15].value]*PlayerCfg.MouseSens[4])/8; + adjust_axis_field(Controls.bank_time, Controls.mouse_axis, kc_mouse[15].value, !kc_mouse[22].value, PlayerCfg.MouseSens[4]); } // From keyboard... if ( Controls.key_bank_left_state ) @@ -1686,30 +1655,18 @@ void kconfig_read_controls(d_event *event, int automap_flag) if ( Controls.btn_bank_left_state ) Controls.bank_time += speed_factor*FrameTime; if ( Controls.btn_bank_right_state ) Controls.bank_time -= speed_factor*FrameTime; // From joystick... - if ( !kc_joystick[22].value ) // If not inverted... - Controls.bank_time -= (Controls.joy_axis[kc_joystick[21].value]*PlayerCfg.JoystickSens[4])/8; - else - Controls.bank_time += (Controls.joy_axis[kc_joystick[21].value]*PlayerCfg.JoystickSens[4])/8; + adjust_axis_field(Controls.bank_time, Controls.joy_axis, kc_joystick[21].value, kc_joystick[22].value, PlayerCfg.JoystickSens[4]); // From mouse... - if ( !kc_mouse[22].value ) // If not inverted... - Controls.bank_time += (Controls.mouse_axis[kc_mouse[21].value]*PlayerCfg.MouseSens[4])/8; - else - Controls.bank_time -= (Controls.mouse_axis[kc_mouse[21].value]*PlayerCfg.MouseSens[4])/8; + adjust_axis_field(Controls.bank_time, Controls.mouse_axis, kc_mouse[21].value, !kc_mouse[22].value, PlayerCfg.MouseSens[4]); //----------- Read forward_thrust_time ------------- // From keyboard/buttons... if ( Controls.accelerate_state ) Controls.forward_thrust_time += speed_factor*FrameTime; if ( Controls.reverse_state ) Controls.forward_thrust_time -= speed_factor*FrameTime; // From joystick... - if ( !kc_joystick[24].value ) // If not inverted... - Controls.forward_thrust_time -= (Controls.joy_axis[kc_joystick[23].value]*PlayerCfg.JoystickSens[5])/8; - else - Controls.forward_thrust_time += (Controls.joy_axis[kc_joystick[23].value]*PlayerCfg.JoystickSens[5])/8; + adjust_axis_field(Controls.forward_thrust_time, Controls.joy_axis, kc_joystick[23].value, kc_joystick[24].value, PlayerCfg.JoystickSens[5]); // From mouse... - if ( !kc_mouse[24].value ) // If not inverted... - Controls.forward_thrust_time -= (Controls.mouse_axis[kc_mouse[23].value]*PlayerCfg.MouseSens[5])/8; - else - Controls.forward_thrust_time += (Controls.mouse_axis[kc_mouse[23].value]*PlayerCfg.MouseSens[5])/8; + adjust_axis_field(Controls.forward_thrust_time, Controls.mouse_axis, kc_mouse[23].value, kc_mouse[24].value, PlayerCfg.MouseSens[5]); //----------- Read cruise-control-type of throttle. if ( Controls.cruise_plus_state ) Cruise_speed += speed_factor*FrameTime*80;