From aafc5ec877ff80f1d5891c60247d182a4fbf8f09 Mon Sep 17 00:00:00 2001 From: zicodxx Date: Mon, 26 Sep 2011 20:22:35 +0200 Subject: [PATCH] Gave throttle it's own sensitivity and deadzone settings; Added patch by Hans de Goede to let Slide-On and Bank-On settings use invert settings from Slide- and Bank-axes --- CHANGELOG.txt | 1 + main/kconfig.c | 30 +++++++++++++++--------------- main/menu.c | 7 +++++-- main/playsave.c | 15 ++++++++++++--- main/playsave.h | 6 +++--- 5 files changed, 36 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 7b8918f4a..84d5cd191 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -4,6 +4,7 @@ D1X-Rebirth Changelog -------- main/fireball.c, main/lighting.c: Code consistency checks by _Tyr_; Fixed set but unused variables d1x-rebirth.desktop, SConstruct, misc/physfsx.c: Patches by Hans de Goede: Made the .desktop file follow the official specifications; Added explicit link to libmath for newer versions of binutils; Fixed crash using PhysFS 1.x in PHYSFSX_addArchiveContent() +main/kconfig.c, main/menu.c, main/playsave.c, main/playsave.h: Gave throttle it's own sensitivity and deadzone settings; Added patch by Hans de Goede to let Slide-On and Bank-On settings use invert settings from Slide- and Bank-axes 20110925 -------- diff --git a/main/kconfig.c b/main/kconfig.c index 7f586ed8e..bdb680c78 100644 --- a/main/kconfig.c +++ b/main/kconfig.c @@ -1241,7 +1241,7 @@ void kconfig_read_controls(d_event *event, int automap_flag) if (axis == kc_joystick[21].value) // Bank Deadzone joy_null_value = PlayerCfg.JoystickDead[4]*8; if (axis == kc_joystick[23].value) // Throttle - default deadzone - joy_null_value = 20; + joy_null_value = PlayerCfg.JoystickDead[5]*3; if (Controls.raw_joy_axis[axis] > joy_null_value) Controls.raw_joy_axis[axis] = ((Controls.raw_joy_axis[axis]-joy_null_value)*128)/(128-joy_null_value); @@ -1332,12 +1332,12 @@ void kconfig_read_controls(d_event *event, int automap_flag) if ( Controls.pitch_forward_state ) Controls.vertical_thrust_time += speed_factor*FrameTime; if ( Controls.pitch_backward_state ) Controls.vertical_thrust_time -= speed_factor*FrameTime; // From joystick... - if ( !kc_joystick[14].value ) // If not inverted... + 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; // From mouse... - if ( !kc_mouse[14].value ) // If not inverted... + 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; @@ -1392,12 +1392,12 @@ void kconfig_read_controls(d_event *event, int automap_flag) if ( Controls.heading_right_state ) Controls.sideways_thrust_time += speed_factor*FrameTime; if ( Controls.heading_left_state ) Controls.sideways_thrust_time -= speed_factor*FrameTime; // From joystick... - if ( !kc_joystick[16].value ) // If not inverted... + 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; // From mouse... - if ( !kc_mouse[16].value ) // If not inverted... + 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; @@ -1423,12 +1423,12 @@ void kconfig_read_controls(d_event *event, int automap_flag) if ( Controls.heading_left_state ) Controls.bank_time += speed_factor*FrameTime; if ( Controls.heading_right_state ) Controls.bank_time -= speed_factor*FrameTime; // From joystick... - if ( !kc_joystick[16].value ) // If not inverted... + 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; // From mouse... - if ( !kc_mouse[16].value ) // If not inverted... + 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; @@ -1439,14 +1439,14 @@ void kconfig_read_controls(d_event *event, int automap_flag) if ( Controls.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]; + 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]; + Controls.bank_time += (Controls.joy_axis[kc_joystick[21].value]*PlayerCfg.JoystickSens[4])/8; // From mouse... if ( !kc_mouse[22].value ) // If not inverted... - Controls.bank_time += Controls.mouse_axis[kc_mouse[21].value]; + 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]; + Controls.bank_time -= (Controls.mouse_axis[kc_mouse[21].value]*PlayerCfg.MouseSens[4])/8; //----------- Read forward_thrust_time ------------- // From keyboard/buttons... @@ -1454,14 +1454,14 @@ void kconfig_read_controls(d_event *event, int automap_flag) 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]; + 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]; + Controls.forward_thrust_time += (Controls.joy_axis[kc_joystick[23].value]*PlayerCfg.JoystickSens[5])/8; // From mouse... if ( !kc_mouse[24].value ) // If not inverted... - Controls.forward_thrust_time -= Controls.mouse_axis[kc_mouse[23].value]; + 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]; + Controls.forward_thrust_time += (Controls.mouse_axis[kc_mouse[23].value]*PlayerCfg.MouseSens[5])/8; //----------- Read cruise-control-type of throttle. if ( Controls.cruise_plus_state ) Cruise_speed += speed_factor*FrameTime*80; diff --git a/main/menu.c b/main/menu.c index fbc8e46dd..3cb0b09d7 100644 --- a/main/menu.c +++ b/main/menu.c @@ -982,7 +982,7 @@ void change_res() void input_config_sensitivity() { - newmenu_item m[23]; + newmenu_item m[26]; int i = 0, nitems = 0, joysens = 0, joydead = 0, mousesens = 0, mousefsdead; m[nitems].type = NM_TYPE_TEXT; m[nitems].text = "Joystick Sensitivity:"; nitems++; @@ -992,6 +992,7 @@ void input_config_sensitivity() m[nitems].type = NM_TYPE_SLIDER; m[nitems].text = TXT_SLIDE_LR; m[nitems].value = PlayerCfg.JoystickSens[2]; m[nitems].min_value = 0; m[nitems].max_value = 16; nitems++; m[nitems].type = NM_TYPE_SLIDER; m[nitems].text = TXT_SLIDE_UD; m[nitems].value = PlayerCfg.JoystickSens[3]; m[nitems].min_value = 0; m[nitems].max_value = 16; nitems++; m[nitems].type = NM_TYPE_SLIDER; m[nitems].text = TXT_BANK_LR; m[nitems].value = PlayerCfg.JoystickSens[4]; m[nitems].min_value = 0; m[nitems].max_value = 16; nitems++; + m[nitems].type = NM_TYPE_SLIDER; m[nitems].text = TXT_THROTTLE; m[nitems].value = PlayerCfg.JoystickSens[5]; m[nitems].min_value = 0; m[nitems].max_value = 16; nitems++; m[nitems].type = NM_TYPE_TEXT; m[nitems].text = ""; nitems++; m[nitems].type = NM_TYPE_TEXT; m[nitems].text = "Joystick Deadzone:"; nitems++; joydead = nitems; @@ -1000,6 +1001,7 @@ void input_config_sensitivity() m[nitems].type = NM_TYPE_SLIDER; m[nitems].text = TXT_SLIDE_LR; m[nitems].value = PlayerCfg.JoystickDead[2]; m[nitems].min_value = 0; m[nitems].max_value = 16; nitems++; m[nitems].type = NM_TYPE_SLIDER; m[nitems].text = TXT_SLIDE_UD; m[nitems].value = PlayerCfg.JoystickDead[3]; m[nitems].min_value = 0; m[nitems].max_value = 16; nitems++; m[nitems].type = NM_TYPE_SLIDER; m[nitems].text = TXT_BANK_LR; m[nitems].value = PlayerCfg.JoystickDead[4]; m[nitems].min_value = 0; m[nitems].max_value = 16; nitems++; + m[nitems].type = NM_TYPE_SLIDER; m[nitems].text = TXT_THROTTLE; m[nitems].value = PlayerCfg.JoystickDead[5]; m[nitems].min_value = 0; m[nitems].max_value = 16; nitems++; m[nitems].type = NM_TYPE_TEXT; m[nitems].text = ""; nitems++; m[nitems].type = NM_TYPE_TEXT; m[nitems].text = "Mouse Sensitivity:"; nitems++; mousesens = nitems; @@ -1008,6 +1010,7 @@ void input_config_sensitivity() m[nitems].type = NM_TYPE_SLIDER; m[nitems].text = TXT_SLIDE_LR; m[nitems].value = PlayerCfg.MouseSens[2]; m[nitems].min_value = 0; m[nitems].max_value = 16; nitems++; m[nitems].type = NM_TYPE_SLIDER; m[nitems].text = TXT_SLIDE_UD; m[nitems].value = PlayerCfg.MouseSens[3]; m[nitems].min_value = 0; m[nitems].max_value = 16; nitems++; m[nitems].type = NM_TYPE_SLIDER; m[nitems].text = TXT_BANK_LR; m[nitems].value = PlayerCfg.MouseSens[4]; m[nitems].min_value = 0; m[nitems].max_value = 16; nitems++; + m[nitems].type = NM_TYPE_SLIDER; m[nitems].text = TXT_THROTTLE; m[nitems].value = PlayerCfg.MouseSens[5]; m[nitems].min_value = 0; m[nitems].max_value = 16; nitems++; m[nitems].type = NM_TYPE_TEXT; m[nitems].text = ""; nitems++; m[nitems].type = NM_TYPE_TEXT; m[nitems].text = "Mouse FlightSim Deadzone:"; nitems++; mousefsdead = nitems; @@ -1015,7 +1018,7 @@ void input_config_sensitivity() newmenu_do1(NULL, "SENSITIVITY & DEADZONE", nitems, m, NULL, NULL, 1); - for (i = 0; i <= 4; i++) + for (i = 0; i <= 5; i++) { PlayerCfg.JoystickSens[i] = m[joysens+i].value; PlayerCfg.JoystickDead[i] = m[joydead+i].value; diff --git a/main/playsave.c b/main/playsave.c index a04a59412..3a9e95d3a 100644 --- a/main/playsave.c +++ b/main/playsave.c @@ -77,10 +77,10 @@ int new_player_config() PlayerCfg.NHighestLevels = 1; PlayerCfg.HighestLevels[0].Shortname[0] = 0; //no name for mission 0 PlayerCfg.HighestLevels[0].LevelNum = 1; //was highest level in old struct - PlayerCfg.JoystickSens[0] = PlayerCfg.JoystickSens[1] = PlayerCfg.JoystickSens[2] = PlayerCfg.JoystickSens[3] = PlayerCfg.JoystickSens[4] = 8; - PlayerCfg.JoystickDead[0] = PlayerCfg.JoystickDead[1] = PlayerCfg.JoystickDead[2] = PlayerCfg.JoystickDead[3] = PlayerCfg.JoystickDead[4] = 0; + PlayerCfg.JoystickSens[0] = PlayerCfg.JoystickSens[1] = PlayerCfg.JoystickSens[2] = PlayerCfg.JoystickSens[3] = PlayerCfg.JoystickSens[4] = PlayerCfg.JoystickSens[5] = 8; + PlayerCfg.JoystickDead[0] = PlayerCfg.JoystickDead[1] = PlayerCfg.JoystickDead[2] = PlayerCfg.JoystickDead[3] = PlayerCfg.JoystickDead[4] = PlayerCfg.JoystickDead[5] = 0; PlayerCfg.MouseFlightSim = 0; - PlayerCfg.MouseSens[0] = PlayerCfg.MouseSens[1] = PlayerCfg.MouseSens[2] = PlayerCfg.MouseSens[3] = PlayerCfg.MouseSens[4] = 8; + PlayerCfg.MouseSens[0] = PlayerCfg.MouseSens[1] = PlayerCfg.MouseSens[2] = PlayerCfg.MouseSens[3] = PlayerCfg.MouseSens[4] = PlayerCfg.MouseSens[5] = 8; PlayerCfg.MouseFSDead = 0; PlayerCfg.MouseFSIndicator = 1; PlayerCfg.CockpitMode[0] = PlayerCfg.CockpitMode[1] = CM_FULL_COCKPIT; @@ -172,6 +172,8 @@ int read_player_d1x(char *filename) PlayerCfg.JoystickSens[3] = atoi(line); if(!strcmp(word,"SENSITIVITY4")) PlayerCfg.JoystickSens[4] = atoi(line); + if(!strcmp(word,"SENSITIVITY5")) + PlayerCfg.JoystickSens[5] = atoi(line); if(!strcmp(word,"DEADZONE0")) PlayerCfg.JoystickDead[0] = atoi(line); if(!strcmp(word,"DEADZONE1")) @@ -182,6 +184,8 @@ int read_player_d1x(char *filename) PlayerCfg.JoystickDead[3] = atoi(line); if(!strcmp(word,"DEADZONE4")) PlayerCfg.JoystickDead[4] = atoi(line); + if(!strcmp(word,"DEADZONE5")) + PlayerCfg.JoystickDead[5] = atoi(line); d_free(word); PHYSFSX_fgets(line,50,f); word=splitword(line,'='); @@ -209,6 +213,8 @@ int read_player_d1x(char *filename) PlayerCfg.MouseSens[3] = atoi(line); if(!strcmp(word,"SENSITIVITY4")) PlayerCfg.MouseSens[4] = atoi(line); + if(!strcmp(word,"SENSITIVITY5")) + PlayerCfg.MouseSens[5] = atoi(line); if(!strcmp(word,"FSDEAD")) PlayerCfg.MouseFSDead = atoi(line); if(!strcmp(word,"FSINDI")) @@ -567,11 +573,13 @@ int write_player_d1x(char *filename) PHYSFSX_printf(fout,"sensitivity2=%d\n",PlayerCfg.JoystickSens[2]); PHYSFSX_printf(fout,"sensitivity3=%d\n",PlayerCfg.JoystickSens[3]); PHYSFSX_printf(fout,"sensitivity4=%d\n",PlayerCfg.JoystickSens[4]); + PHYSFSX_printf(fout,"sensitivity5=%d\n",PlayerCfg.JoystickSens[5]); PHYSFSX_printf(fout,"deadzone0=%d\n",PlayerCfg.JoystickDead[0]); PHYSFSX_printf(fout,"deadzone1=%d\n",PlayerCfg.JoystickDead[1]); PHYSFSX_printf(fout,"deadzone2=%d\n",PlayerCfg.JoystickDead[2]); PHYSFSX_printf(fout,"deadzone3=%d\n",PlayerCfg.JoystickDead[3]); PHYSFSX_printf(fout,"deadzone4=%d\n",PlayerCfg.JoystickDead[4]); + PHYSFSX_printf(fout,"deadzone5=%d\n",PlayerCfg.JoystickDead[5]); PHYSFSX_printf(fout,"[end]\n"); PHYSFSX_printf(fout,"[mouse]\n"); PHYSFSX_printf(fout,"flightsim=%d\n",PlayerCfg.MouseFlightSim); @@ -580,6 +588,7 @@ int write_player_d1x(char *filename) PHYSFSX_printf(fout,"sensitivity2=%d\n",PlayerCfg.MouseSens[2]); PHYSFSX_printf(fout,"sensitivity3=%d\n",PlayerCfg.MouseSens[3]); PHYSFSX_printf(fout,"sensitivity4=%d\n",PlayerCfg.MouseSens[4]); + PHYSFSX_printf(fout,"sensitivity5=%d\n",PlayerCfg.MouseSens[5]); PHYSFSX_printf(fout,"fsdead=%d\n",PlayerCfg.MouseFSDead); PHYSFSX_printf(fout,"fsindi=%d\n",PlayerCfg.MouseFSIndicator); PHYSFSX_printf(fout,"[end]\n"); diff --git a/main/playsave.h b/main/playsave.h index 786270112..9a6756825 100644 --- a/main/playsave.h +++ b/main/playsave.h @@ -59,10 +59,10 @@ typedef struct player_config int AutoLeveling; short NHighestLevels; hli HighestLevels[MAX_MISSIONS]; - int JoystickSens[5]; - int JoystickDead[5]; + int JoystickSens[6]; + int JoystickDead[6]; ubyte MouseFlightSim; - int MouseSens[5]; + int MouseSens[6]; int MouseFSDead; int MouseFSIndicator; int CockpitMode[2]; // 0 saves the "real" cockpit, 1 also saves letterbox and rear. Used to properly switch between modes and restore the real one.