Use helper to read axis fields

This commit is contained in:
Kp 2013-11-03 22:51:01 +00:00
parent 6f839dedae
commit 4ba8444fc8

View file

@ -1271,6 +1271,16 @@ void kconfig(int n, const char * title)
}
}
template <std::size_t N>
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;