19 extern int num_joysticks;
21 int joydefs_calibrate_flag = 0;
23 void joydefs_calibrate()
25 joydefs_calibrate_flag = 0;
28 nm_messagebox( NULL, 1, TXT_OK, TXT_NO_JOYSTICK );
32 //Actual calibration if necessary
36 void joydef_menuset_1(int nitems, newmenu_item * items, int *last_key, int citem )
38 int oc_joy = Config_control_joystick.intval;
39 int oc_mouse = Config_control_mouse.intval;
41 cvar_setint(&Config_control_joystick, items[0].value);
42 cvar_setint(&Config_control_mouse, items[1].value);
44 if (!oc_joy && Config_control_joystick.intval)
45 joydefs_calibrate_flag = 1;
47 if (oc_joy != Config_control_joystick.intval || oc_mouse != Config_control_mouse.intval)
52 #define ADD_SLIDER(txt,v,minv,maxv) do { m[nitems].type=NM_TYPE_SLIDER; m[nitems].text=txt; m[nitems].value=v; m[nitems].min_value=minv; m[nitems].max_value=maxv; nitems++; } while (0)
54 void joydefs_sensitivity(void)
60 m[nitems].type = NM_TYPE_TEXT; m[nitems].text = "Joystick Sensitivity"; nitems++;
61 ADD_SLIDER(TXT_TURN_LR, f2i(8 * Config_joystick_sensitivity[AXIS_TURN-1].fixval), 0, 16);
62 ADD_SLIDER(TXT_PITCH_UD, f2i(8 * Config_joystick_sensitivity[AXIS_PITCH-1].fixval), 0, 16);
63 ADD_SLIDER(TXT_SLIDE_LR, f2i(8 * Config_joystick_sensitivity[AXIS_LEFTRIGHT-1].fixval), 0, 16);
64 ADD_SLIDER(TXT_SLIDE_UD, f2i(8 * Config_joystick_sensitivity[AXIS_UPDOWN-1].fixval), 0, 16);
65 ADD_SLIDER(TXT_BANK_LR, f2i(8 * Config_joystick_sensitivity[AXIS_BANK-1].fixval), 0, 16);
66 ADD_SLIDER(TXT_THROTTLE, f2i(8 * Config_joystick_sensitivity[AXIS_THROTTLE-1].fixval), 0, 16);
68 m[nitems].type = NM_TYPE_TEXT; m[nitems].text = ""; nitems++;
69 m[nitems].type = NM_TYPE_TEXT; m[nitems].text = "Joystick Deadzone"; nitems++;
70 ADD_SLIDER(TXT_TURN_LR, f2i(8 * Config_joystick_deadzone[AXIS_TURN-1].fixval), 0, 16);
71 ADD_SLIDER(TXT_PITCH_UD, f2i(8 * Config_joystick_deadzone[AXIS_PITCH-1].fixval), 0, 16);
72 ADD_SLIDER(TXT_SLIDE_LR, f2i(8 * Config_joystick_deadzone[AXIS_LEFTRIGHT-1].fixval), 0, 16);
73 ADD_SLIDER(TXT_SLIDE_UD, f2i(8 * Config_joystick_deadzone[AXIS_UPDOWN-1].fixval), 0, 16);
74 ADD_SLIDER(TXT_BANK_LR, f2i(8 * Config_joystick_deadzone[AXIS_BANK-1].fixval), 0, 16);
75 ADD_SLIDER(TXT_THROTTLE, f2i(8 * Config_joystick_deadzone[AXIS_THROTTLE-1].fixval), 0, 16);
77 m[nitems].type = NM_TYPE_TEXT; m[nitems].text = ""; nitems++;
78 m[nitems].type = NM_TYPE_TEXT; m[nitems].text = "Mouse Sensitivity"; nitems++;
79 ADD_SLIDER(TXT_TURN_LR, f2i(8 * Config_mouse_sensitivity[AXIS_TURN-1].fixval), 0, 16);
80 ADD_SLIDER(TXT_PITCH_UD, f2i(8 * Config_mouse_sensitivity[AXIS_PITCH-1].fixval), 0, 16);
81 ADD_SLIDER(TXT_SLIDE_LR, f2i(8 * Config_mouse_sensitivity[AXIS_LEFTRIGHT-1].fixval), 0, 16);
82 ADD_SLIDER(TXT_SLIDE_UD, f2i(8 * Config_mouse_sensitivity[AXIS_UPDOWN-1].fixval), 0, 16);
83 ADD_SLIDER(TXT_BANK_LR, f2i(8 * Config_mouse_sensitivity[AXIS_BANK-1].fixval), 0, 16);
84 ADD_SLIDER(TXT_THROTTLE, f2i(8 * Config_mouse_sensitivity[AXIS_THROTTLE-1].fixval), 0, 16);
87 i1 = newmenu_do1(NULL, "Sensitivity", nitems, m, NULL, i1);
90 cvar_setfl(&Config_joystick_sensitivity[AXIS_TURN-1], m[1].value / 8.0);
91 cvar_setfl(&Config_joystick_sensitivity[AXIS_PITCH-1], m[2].value / 8.0);
92 cvar_setfl(&Config_joystick_sensitivity[AXIS_LEFTRIGHT-1], m[3].value / 8.0);
93 cvar_setfl(&Config_joystick_sensitivity[AXIS_UPDOWN-1], m[4].value / 8.0);
94 cvar_setfl(&Config_joystick_sensitivity[AXIS_BANK-1], m[5].value / 8.0);
95 cvar_setfl(&Config_joystick_sensitivity[AXIS_THROTTLE-1], m[6].value / 8.0);
97 cvar_setfl(&Config_joystick_deadzone[AXIS_TURN-1], m[ 9].value / 16.0);
98 cvar_setfl(&Config_joystick_deadzone[AXIS_PITCH-1], m[10].value / 16.0);
99 cvar_setfl(&Config_joystick_deadzone[AXIS_LEFTRIGHT-1], m[11].value / 16.0);
100 cvar_setfl(&Config_joystick_deadzone[AXIS_UPDOWN-1], m[12].value / 16.0);
101 cvar_setfl(&Config_joystick_deadzone[AXIS_BANK-1], m[13].value / 16.0);
102 cvar_setfl(&Config_joystick_deadzone[AXIS_THROTTLE-1], m[14].value / 16.0);
104 cvar_setfl(&Config_mouse_sensitivity[AXIS_TURN-1], m[17].value / 8.0);
105 cvar_setfl(&Config_mouse_sensitivity[AXIS_PITCH-1], m[18].value / 8.0);
106 cvar_setfl(&Config_mouse_sensitivity[AXIS_LEFTRIGHT-1], m[19].value / 8.0);
107 cvar_setfl(&Config_mouse_sensitivity[AXIS_UPDOWN-1], m[20].value / 8.0);
108 cvar_setfl(&Config_mouse_sensitivity[AXIS_BANK-1], m[21].value / 8.0);
109 cvar_setfl(&Config_mouse_sensitivity[AXIS_THROTTLE-1], m[22].value / 8.0);
113 void joydefs_config()
119 m[0].type = NM_TYPE_CHECK; m[0].text = TXT_CONTROL_JOYSTICK; m[0].value = Config_control_joystick.intval;
120 m[1].type = NM_TYPE_CHECK; m[1].text = TXT_CONTROL_MOUSE; m[1].value = Config_control_mouse.intval;
121 m[2].type = NM_TYPE_TEXT; m[2].text = "";
122 m[3].type = NM_TYPE_MENU; m[3].text = TXT_CUST_KEYBOARD;
123 m[4].type = NM_TYPE_MENU; m[4].text = "CUSTOMIZE ANALOG CONTROLS";
124 m[5].type = NM_TYPE_MENU; m[5].text = "CUSTOMIZE D2X KEYS";
125 m[6].type = NM_TYPE_TEXT; m[6].text = "";
126 m[7].type = NM_TYPE_MENU; m[7].text = TXT_JOYS_SENSITIVITY;
127 m[8].type = NM_TYPE_MENU; m[8].text = TXT_CAL_JOYSTICK;
130 i1 = newmenu_do1(NULL, TXT_CONTROLS, nitems, m, joydef_menuset_1, i1);
132 cvar_setint(&Config_control_joystick, m[0].value);
133 cvar_setint(&Config_control_mouse, m[1].value);
136 case 3: kconfig(0, TXT_KEYBOARD); break;
137 case 4: kconfig(1, TXT_AXES); break;
138 case 5: kconfig(2, "D2X KEYS"); break;
139 case 7: joydefs_sensitivity(); break;
140 case 8: joydefs_calibrate(); break;