Overhaul for CONTROLS menu; Cleaned kconfig-code a little and slacked out keymap arrays

This commit is contained in:
zicodxx 2010-02-21 01:25:27 +00:00
parent 4733361212
commit 675d6d395a
7 changed files with 119 additions and 253 deletions

View file

@ -1,5 +1,9 @@
D1X-Rebirth Changelog
20100221
--------
main/kconfig.c, main/kconfig.h, main/menu.c, main/playsave.c, main/playsave.h, main/text.h: Overhaul for CONTROLS menu; Cleaned kconfig-code a little and slacked out keymap arrays
20100219
--------
main/gauges.c, main/text.c, main/weapon.c: The little light bulb showing homing warning in Cockpit was broken and I replaced it; Rewritten code to show weapon text in Cockpit and Statusbar slightly; Instead of using hardcoded weapon strings, use from descent.txb and fixed too long spreadfire string properly

View file

@ -85,9 +85,6 @@ fix Cruise_speed=0;
#define BT_JOY_AXIS 4
#define BT_INVERT 5
#define CONTROL_USING_JOYSTICK (PlayerCfg.ControlType == CONTROL_JOYSTICK || PlayerCfg.ControlType == CONTROL_JOYMOUSE)
#define CONTROL_USING_MOUSE (PlayerCfg.ControlType == CONTROL_MOUSE || PlayerCfg.ControlType == CONTROL_JOYMOUSE)
char *btype_text[] = { "BT_KEY", "BT_MOUSE_BUTTON", "BT_MOUSE_AXIS", "BT_JOY_BUTTON", "BT_JOY_AXIS", "BT_INVERT" };
#define INFO_Y (188)
@ -121,20 +118,10 @@ typedef struct kc_menu
#endif
} kc_menu;
//----------- WARNING!!!!!!! -------------------------------------------
// THESE NEXT FOUR BLOCKS OF DATA ARE GENERATED BY PRESSING DEL+F12 WHEN
// IN THE KEYBOARD CONFIG SCREEN. BASICALLY, THAT PROCEDURE MODIFIES THE
// U,D,L,R FIELDS OF THE ARRAYS AND DUMPS THE NEW ARRAYS INTO KCONFIG.COD
//-------------------------------------------------------------------------
ubyte DefaultKeySettings[CONTROL_MAX_TYPES][MAX_CONTROLS] = {
{0xc8,0x48,0xd0,0x50,0xcb,0x4b,0xcd,0x4d,0x38,0xff,0xff,0x4f,0xff,0x51,0xff,0x4a,0xff,0x4e,0xff,0xff,0x10,0x47,0x12,0x49,0x1d,0x9d,0x39,0xff,0x21,0xff,0x1e,0xff,0x15,0xff,0x30,0xff,0x13,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
{0x0,0x1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0xff,0x0,0xff,0x0,0xff,0x0,0xff,0x0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
{0x0,0x1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0xff,0x0,0xff,0x0,0xff,0x0,0xff,0x0,0xff,0xff,0x2,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
{0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
{0x0,0x1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0xff,0x0,0xff,0x0,0xff,0x0,0xff,0x0,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
ubyte DefaultKeySettings[3][MAX_CONTROLS] = {
{0xc8,0x48,0xd0,0x50,0xcb,0x4b,0xcd,0x4d,0x38,0xff,0xff,0x4f,0xff,0x51,0xff,0x4a,0xff,0x4e,0xff,0xff,0x10,0x47,0x12,0x49,0x1d,0x9d,0x39,0xff,0x21,0xff,0x1e,0xff,0x15,0xff,0x30,0xff,0x13,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf,0xff,0x0,0x0,0x0,0x0},
{0x0,0x1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0xff,0x0,0xff,0x0,0xff,0x0,0xff,0x0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0},
{0x0,0x1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0xff,0x0,0xff,0x0,0xff,0x0,0xff,0x0,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
};
ubyte DefaultKeySettingsD1X[MAX_D1X_CONTROLS] = {
@ -305,62 +292,6 @@ void kc_change_joyaxis( kc_menu *menu, kc_item * item );
void kc_change_mouseaxis( kc_menu *menu, kc_item * item );
void kc_change_invert( kc_menu *menu, kc_item * item );
int isJoyRotationKey(int test_key)
{
if (test_key == kc_joystick[11].value ||
test_key == kc_joystick[12].value)
{
return 1;
}// end if
// else...
return 0;
}
int isMouseRotationKey(int test_key)
{
if (test_key == kc_mouse[11].value ||
test_key == kc_mouse[12].value)
{
return 1;
}// end if
// else...
return 0;
}
int isKeyboardRotationKey(int test_key)
{
if (test_key == kc_keyboard[0].value ||
test_key == kc_keyboard[1].value ||
test_key == kc_keyboard[2].value ||
test_key == kc_keyboard[3].value ||
test_key == kc_keyboard[4].value ||
test_key == kc_keyboard[5].value ||
test_key == kc_keyboard[6].value ||
test_key == kc_keyboard[7].value ||
test_key == kc_keyboard[20].value ||
test_key == kc_keyboard[21].value ||
test_key == kc_keyboard[22].value ||
test_key == kc_keyboard[23].value)
{
return 1;
}// end if
// else...
return 0;
}
int kconfig_is_axes_used(int axis)
{
int i;
for (i=0; i<NUM_JOYSTICK_CONTROLS; i++ ) {
if (( kc_joystick[i].type == BT_JOY_AXIS ) && (kc_joystick[i].value == axis ))
return 1;
}
return 0;
}
#ifdef TABLE_CREATION
int find_item_at( kc_item * items, int nitems, int x, int y )
{
@ -702,33 +633,20 @@ int kconfig_idle(window *wind, d_event *event, kc_menu *menu)
break;
case KEY_CTRLED+KEY_R:
if ( menu->items==kc_keyboard )
{
for (i=0; i<NUM_KEY_CONTROLS; i++ )
{
menu->items[i].value=DefaultKeySettings[0][i];
}
}
else if ( menu->items==kc_d1x )
{
for(i=0;i<NUM_D1X_CONTROLS;i++)
{
menu->items[i].value=DefaultKeySettingsD1X[i];
}
}
else if ( menu->items==kc_mouse )
{
for (i=0; i<NUM_MOUSE_CONTROLS; i++ )
{
menu->items[i].value = DefaultKeySettings[PlayerCfg.ControlType][i];
}
}
else
{
if ( menu->items==kc_joystick )
for (i=0; i<NUM_JOYSTICK_CONTROLS; i++ )
{
menu->items[i].value = DefaultKeySettings[PlayerCfg.ControlType][i];
}
}
menu->items[i].value = DefaultKeySettings[1][i];
if ( menu->items==kc_mouse )
for (i=0; i<NUM_MOUSE_CONTROLS; i++ )
menu->items[i].value = DefaultKeySettings[2][i];
if ( menu->items==kc_d1x )
for(i=0;i<NUM_D1X_CONTROLS;i++)
menu->items[i].value=DefaultKeySettingsD1X[i];
break;
case KEY_DELETE:
menu->items[menu->citem].value=255;
@ -799,8 +717,8 @@ int kconfig_idle(window *wind, d_event *event, kc_menu *menu)
}
fp = fopen( "kconfig.cod", "wt" );
fprintf( fp, "ubyte DefaultKeySettings[CONTROL_MAX_TYPES][MAX_CONTROLS] = {\n" );
for (i=0; i<CONTROL_MAX_TYPES; i++ ) {
fprintf( fp, "ubyte DefaultKeySettings[3][MAX_CONTROLS] = {\n" );
for (i=0; i<3; i++ ) {
int j;
fprintf( fp, "{0x%2x", PlayerCfg.KeySettings[i][0] );
for (j=1; j<MAX_CONTROLS; j++ )
@ -931,16 +849,11 @@ int kconfig_handler(window *wind, d_event *event, kc_menu *menu)
for (i=0; i<NUM_KEY_CONTROLS; i++ )
PlayerCfg.KeySettings[0][i] = kc_keyboard[i].value;
if ( CONTROL_USING_JOYSTICK )
{
for (i=0; i<NUM_JOYSTICK_CONTROLS; i++ )
PlayerCfg.KeySettings[CONTROL_JOYSTICK][i] = kc_joystick[i].value;
}
if ( CONTROL_USING_MOUSE )
{
for (i=0; i<NUM_MOUSE_CONTROLS; i++ )
PlayerCfg.KeySettings[CONTROL_MOUSE][i] = kc_mouse[i].value;
}
for (i=0; i<NUM_JOYSTICK_CONTROLS; i++ )
PlayerCfg.KeySettings[1][i] = kc_joystick[i].value;
for (i=0; i<NUM_MOUSE_CONTROLS; i++ )
PlayerCfg.KeySettings[2][i] = kc_mouse[i].value;
for (i=0; i<NUM_D1X_CONTROLS; i++)
PlayerCfg.KeySettingsD1X[i] = kc_d1x[i].value;
@ -1210,14 +1123,7 @@ void kconfig(int n, char * title)
case 0:kconfig_sub( kc_keyboard,NUM_KEY_CONTROLS, title); break;
case 1:kconfig_sub( kc_joystick,NUM_JOYSTICK_CONTROLS,title); break;
case 2:kconfig_sub( kc_mouse, NUM_MOUSE_CONTROLS, title); break;
case 3:
PlayerCfg.ControlType = CONTROL_JOYSTICK;
kconfig_sub( kc_joystick,NUM_JOYSTICK_CONTROLS, "JOYSTICK");
PlayerCfg.ControlType = CONTROL_MOUSE;
kconfig_sub( kc_mouse, NUM_MOUSE_CONTROLS, "MOUSE");
PlayerCfg.ControlType = CONTROL_JOYMOUSE;
break;
case 4:kconfig_sub( kc_d1x, NUM_D1X_CONTROLS, title ); break;
case 3:kconfig_sub( kc_d1x, NUM_D1X_CONTROLS, title ); break;
default:
Int3();
return;
@ -1258,7 +1164,7 @@ void controls_read_all(int automap_flag)
bank_on = 0;
//--------- Read Joystick -----------
if (CONTROL_USING_JOYSTICK ) {
if ( PlayerCfg.ControlType & CONTROL_USING_JOYSTICK ) {
joystick_read_raw_axis( raw_joy_axis );
for (i = 0; i < joy_num_axes; i++)
@ -1285,7 +1191,7 @@ void controls_read_all(int automap_flag)
use_joystick=0;
}
if (CONTROL_USING_MOUSE) {
if ( PlayerCfg.ControlType & CONTROL_USING_MOUSE) {
//--------- Read Mouse -----------
if (FixedStep & EPS30) // as the mouse won't get delta in each frame (at high FPS) and we have a capped movement, read time-based
mouse_get_delta( &dx, &dy, &dz );
@ -1867,30 +1773,25 @@ void kc_set_controls()
for (i=0; i<NUM_KEY_CONTROLS; i++ )
kc_keyboard[i].value = PlayerCfg.KeySettings[0][i];
if (CONTROL_USING_JOYSTICK)
for (i=0; i<NUM_JOYSTICK_CONTROLS; i++ )
{
for (i=0; i<NUM_JOYSTICK_CONTROLS; i++ )
kc_joystick[i].value = PlayerCfg.KeySettings[1][i];
if (kc_joystick[i].type == BT_INVERT )
{
kc_joystick[i].value = PlayerCfg.KeySettings[CONTROL_JOYSTICK][i];
if (kc_joystick[i].type == BT_INVERT )
{
if (kc_joystick[i].value!=1)
kc_joystick[i].value = 0;
PlayerCfg.KeySettings[CONTROL_JOYSTICK][i] = kc_joystick[i].value;
}
if (kc_joystick[i].value!=1)
kc_joystick[i].value = 0;
PlayerCfg.KeySettings[1][i] = kc_joystick[i].value;
}
}
if (CONTROL_USING_MOUSE)
for (i=0; i<NUM_MOUSE_CONTROLS; i++ )
{
for (i=0; i<NUM_MOUSE_CONTROLS; i++ )
kc_mouse[i].value = PlayerCfg.KeySettings[2][i];
if (kc_mouse[i].type == BT_INVERT )
{
kc_mouse[i].value = PlayerCfg.KeySettings[CONTROL_MOUSE][i];
if (kc_mouse[i].type == BT_INVERT )
{
if (kc_mouse[i].value!=1)
kc_mouse[i].value = 0;
PlayerCfg.KeySettings[CONTROL_MOUSE][i] = kc_mouse[i].value;
}
if (kc_mouse[i].value!=1)
kc_mouse[i].value = 0;
PlayerCfg.KeySettings[2][i] = kc_mouse[i].value;
}
}

View file

@ -52,47 +52,25 @@ typedef struct _control_info {
ubyte cycle_secondary_down_count;
} control_info;
#define CONTROL_NONE 0
#define CONTROL_JOYSTICK 1
#define CONTROL_MOUSE 5
#define CONTROL_MAX_TYPES 7
#define CONTROL_JOYMOUSE 8
// old stuff - kept for compability reasons
#define CONTROL_FLIGHTSTICK_PRO 2
#define CONTROL_THRUSTMASTER_FCS 3
#define CONTROL_GRAVIS_GAMEPAD 4
#define CONTROL_CYBERMAN 6
#define CONTROL_USING_JOYSTICK 1
#define CONTROL_USING_MOUSE 2
#define NUM_D1X_CONTROLS 24
#define MAX_D1X_CONTROLS 40
#define NUM_KEY_CONTROLS 46
#define NUM_JOYSTICK_CONTROLS 44
#define NUM_MOUSE_CONTROLS 29
#define MAX_CONTROLS 62
#define MAX_NOND1X_CONTROLS 50
#define MAX_CONTROLS 50
extern control_info Controls;
extern void controls_read_all(int automap_flag);
extern void kconfig(int n, char *title);
extern ubyte DefaultKeySettingsD1X[MAX_D1X_CONTROLS];
extern ubyte DefaultKeySettings[CONTROL_MAX_TYPES][MAX_CONTROLS];
extern char *control_text[CONTROL_MAX_TYPES];
extern ubyte DefaultKeySettings[3][MAX_CONTROLS];
extern void kc_set_controls();
// Tries to use vfx1 head tracking.
void kconfig_sense_init();
//set the cruise speed to zero
extern void reset_cruise(void);
extern int kconfig_is_axes_used(int axis);
extern int isJoyRotationKey(int test_key); //tells if "test_key" is setup for rotation on the joy
extern int isMouseRotationKey(int test_key); //tells if "test_key" is setup for rotation on the mouse
extern int isKeyboardRotationKey(int test_key); //tells if "test_key" is setup for rotation on the keyboard
#endif /* _KCONFIG_H */

View file

@ -953,7 +953,6 @@ void change_res()
int input_menuset(newmenu *menu, d_event *event, void *userdata)
{
int i;
newmenu_item *items = newmenu_get_items(menu);
int citem = newmenu_get_citem(menu);
@ -964,48 +963,39 @@ int input_menuset(newmenu *menu, d_event *event, void *userdata)
case EVENT_NEWMENU_CHANGED:
switch (citem)
{
case 0:
case 1:
case 2:
case 3:
PlayerCfg.ControlType = citem;
if (PlayerCfg.ControlType == 2) PlayerCfg.ControlType = CONTROL_MOUSE;
if (PlayerCfg.ControlType == 3) PlayerCfg.ControlType = CONTROL_JOYMOUSE;
kc_set_controls();
break;
case 10: PlayerCfg.JoystickSensitivityX = items[citem].value; break;
case 11: PlayerCfg.JoystickSensitivityY = items[citem].value; break;
case 12: PlayerCfg.JoystickDeadzone = items[citem].value; break;
case 15: PlayerCfg.MouseSensitivityX = items[citem].value; break;
case 16: PlayerCfg.MouseSensitivityY = items[citem].value; break;
case 17: PlayerCfg.MouseFilter = items[citem].value; break;
case 0: (items[citem].value)?(PlayerCfg.ControlType|=CONTROL_USING_JOYSTICK):(PlayerCfg.ControlType&=~CONTROL_USING_JOYSTICK); break;
case 1: (items[citem].value)?(PlayerCfg.ControlType|=CONTROL_USING_MOUSE):(PlayerCfg.ControlType&=~CONTROL_USING_MOUSE); break;
case 9: PlayerCfg.JoystickSensitivityX = items[citem].value; break;
case 10: PlayerCfg.JoystickSensitivityY = items[citem].value; break;
case 11: PlayerCfg.JoystickDeadzone = items[citem].value; break;
case 14: PlayerCfg.MouseSensitivityX = items[citem].value; break;
case 15: PlayerCfg.MouseSensitivityY = items[citem].value; break;
case 16: PlayerCfg.MouseFilter = items[citem].value; break;
}
break;
case EVENT_NEWMENU_SELECTED:
i = PlayerCfg.ControlType;
if (i == CONTROL_MOUSE) i = 2;
if (i == CONTROL_JOYMOUSE) i = 3;
switch (citem)
{
case 5:
kconfig(i, items[i].text);
break;
case 6:
case 3:
kconfig(0, "KEYBOARD");
break;
case 7:
kconfig(4, "WEAPON KEYS");
case 4:
kconfig(1, "JOYSTICK");
break;
case 19:
case 5:
kconfig(2, "MOUSE");
break;
case 6:
kconfig(3, "WEAPON KEYS");
break;
case 18:
show_help();
break;
case 20:
case 19:
show_netgame_help();
break;
case 21:
case 20:
show_newdemo_help();
break;
}
@ -1021,39 +1011,32 @@ int input_menuset(newmenu *menu, d_event *event, void *userdata)
void input_config()
{
newmenu_item m[22];
int i;
int nitems = 22;
newmenu_item m[21];
int nitems = 21;
m[0].type = NM_TYPE_RADIO; m[0].text = "KEYBOARD"; m[0].value = 0; m[0].group = 0;
m[1].type = NM_TYPE_RADIO; m[1].text = "JOYSTICK"; m[1].value = 0; m[1].group = 0;
m[2].type = NM_TYPE_RADIO; m[2].text = "MOUSE"; m[2].value = 0; m[2].group = 0;
m[3].type = NM_TYPE_RADIO; m[3].text = "JOYSTICK & MOUSE"; m[3].value = 0; m[3].group = 0;
m[4].type = NM_TYPE_TEXT; m[4].text = "";
m[5].type = NM_TYPE_MENU; m[5].text = TXT_CUST_ABOVE;
m[6].type = NM_TYPE_MENU; m[6].text = TXT_CUST_KEYBOARD;
m[7].type = NM_TYPE_MENU; m[7].text = "CUSTOMIZE WEAPON KEYS";
m[8].type = NM_TYPE_TEXT; m[8].text = "";
m[9].type = NM_TYPE_TEXT; m[9].text = "Joystick";
m[10].type = NM_TYPE_SLIDER; m[10].text="X Sensitivity"; m[10].value=PlayerCfg.JoystickSensitivityX; m[10].min_value = 0; m[10].max_value = 16;
m[11].type = NM_TYPE_SLIDER; m[11].text="Y Sensitivity"; m[11].value=PlayerCfg.JoystickSensitivityY; m[11].min_value = 0; m[11].max_value = 16;
m[12].type = NM_TYPE_SLIDER; m[12].text="Deadzone"; m[12].value=PlayerCfg.JoystickDeadzone; m[12].min_value=0; m[12].max_value = 16;
m[13].type = NM_TYPE_TEXT; m[13].text = "";
m[14].type = NM_TYPE_TEXT; m[14].text = "Mouse";
m[15].type = NM_TYPE_SLIDER; m[15].text="X Sensitivity"; m[15].value=PlayerCfg.MouseSensitivityX; m[15].min_value = 0; m[15].max_value = 16;
m[16].type = NM_TYPE_SLIDER; m[16].text="Y Sensitivity"; m[16].value=PlayerCfg.MouseSensitivityY; m[16].min_value = 0; m[16].max_value = 16;
m[17].type = NM_TYPE_CHECK; m[17].text="Mouse Smoothing/Filtering"; m[17].value=PlayerCfg.MouseFilter;
m[18].type = NM_TYPE_TEXT; m[18].text = "";
m[19].type = NM_TYPE_MENU; m[19].text = "GAME SYSTEM KEYS";
m[20].type = NM_TYPE_MENU; m[20].text = "NETGAME SYSTEM KEYS";
m[21].type = NM_TYPE_MENU; m[21].text = "DEMO SYSTEM KEYS";
m[0].type = NM_TYPE_CHECK; m[0].text = "USE JOYSTICK"; m[0].value = (PlayerCfg.ControlType&CONTROL_USING_JOYSTICK);
m[1].type = NM_TYPE_CHECK; m[1].text = "USE MOUSE"; m[1].value = (PlayerCfg.ControlType&CONTROL_USING_MOUSE);
m[2].type = NM_TYPE_TEXT; m[2].text = "";
m[3].type = NM_TYPE_MENU; m[3].text = "CUSTOMIZE KEYBOARD";
m[4].type = NM_TYPE_MENU; m[4].text = "CUSTOMIZE JOYSTICK";
m[5].type = NM_TYPE_MENU; m[5].text = "CUSTOMIZE MOUSE";
m[6].type = NM_TYPE_MENU; m[6].text = "CUSTOMIZE WEAPON KEYS";
m[7].type = NM_TYPE_TEXT; m[7].text = "";
m[8].type = NM_TYPE_TEXT; m[8].text = "Joystick";
m[9].type = NM_TYPE_SLIDER; m[9].text="X Sensitivity"; m[9].value=PlayerCfg.JoystickSensitivityX; m[9].min_value = 0; m[9].max_value = 16;
m[10].type = NM_TYPE_SLIDER; m[10].text="Y Sensitivity"; m[10].value=PlayerCfg.JoystickSensitivityY; m[10].min_value = 0; m[10].max_value = 16;
m[11].type = NM_TYPE_SLIDER; m[11].text="Deadzone"; m[11].value=PlayerCfg.JoystickDeadzone; m[11].min_value=0; m[11].max_value = 16;
m[12].type = NM_TYPE_TEXT; m[12].text = "";
m[13].type = NM_TYPE_TEXT; m[13].text = "Mouse";
m[14].type = NM_TYPE_SLIDER; m[14].text="X Sensitivity"; m[14].value=PlayerCfg.MouseSensitivityX; m[14].min_value = 0; m[14].max_value = 16;
m[15].type = NM_TYPE_SLIDER; m[15].text="Y Sensitivity"; m[15].value=PlayerCfg.MouseSensitivityY; m[15].min_value = 0; m[15].max_value = 16;
m[16].type = NM_TYPE_CHECK; m[16].text="Mouse Smoothing/Filtering"; m[16].value=PlayerCfg.MouseFilter;
m[17].type = NM_TYPE_TEXT; m[17].text = "";
m[18].type = NM_TYPE_MENU; m[18].text = "GAME SYSTEM KEYS";
m[19].type = NM_TYPE_MENU; m[19].text = "NETGAME SYSTEM KEYS";
m[20].type = NM_TYPE_MENU; m[20].text = "DEMO SYSTEM KEYS";
i = PlayerCfg.ControlType;
if (i == CONTROL_MOUSE) i = 2;
if (i==CONTROL_JOYMOUSE) i = 3;
m[i].value = 1;
newmenu_do1(NULL, TXT_CONTROLS, nitems, m, input_menuset, NULL, 5);
newmenu_do1(NULL, TXT_CONTROLS, nitems, m, input_menuset, NULL, 3);
}
void do_graphics_menu()

View file

@ -63,22 +63,15 @@ extern void InitWeaponOrdering();
int new_player_config()
{
int i,j;
int mct=CONTROL_MAX_TYPES;
int i=0;
for (i=0;i<N_SAVE_SLOTS;i++)
saved_games[i].name[0] = 0;
mct--;
PlayerCfg.ControlType=CONTROL_NONE; // Assume keyboard
InitWeaponOrdering (); //setup default weapon priorities
for (i=0;i<CONTROL_MAX_TYPES; i++ )
for (j=0;j<MAX_CONTROLS; j++ )
PlayerCfg.KeySettings[i][j] = DefaultKeySettings[i][j];
for(i=0; i < MAX_D1X_CONTROLS; i++)
PlayerCfg.KeySettingsD1X[i] = DefaultKeySettingsD1X[i];
PlayerCfg.ControlType=0; // Assume keyboard
memcpy(PlayerCfg.KeySettings, DefaultKeySettings, sizeof(DefaultKeySettings));
memcpy(PlayerCfg.KeySettingsD1X, DefaultKeySettingsD1X, sizeof(DefaultKeySettingsD1X));
kc_set_controls();
PlayerCfg.DefaultDifficulty = 1;
@ -702,12 +695,16 @@ int read_player_file()
//read kconfig data
{
int i,j;
ubyte dummy_joy_sens;
for(i=0;i<CONTROL_MAX_TYPES;i++)
for(j=0;j<MAX_NOND1X_CONTROLS;j++)
if(PHYSFS_read(file, &PlayerCfg.KeySettings[i][j], sizeof(ubyte),1)!=1)
goto read_player_file_failed;
if (PHYSFS_read(file, &PlayerCfg.KeySettings[0], sizeof(PlayerCfg.KeySettings[0]),1)!=1)
goto read_player_file_failed;
if (PHYSFS_read(file, &PlayerCfg.KeySettings[1], sizeof(PlayerCfg.KeySettings[1]),1)!=1)
goto read_player_file_failed;
PHYSFS_seek( file, PHYSFS_tell(file)+(sizeof(ubyte)*MAX_CONTROLS*3) ); // Skip obsolete Flightstick/Thrustmaster/Gravis map fields
if (PHYSFS_read(file, &PlayerCfg.KeySettings[2], sizeof(PlayerCfg.KeySettings[2]),1)!=1)
goto read_player_file_failed;
PHYSFS_seek( file, PHYSFS_tell(file)+(sizeof(ubyte)*MAX_CONTROLS) ); // Skip obsolete Cyberman map field
if (PHYSFS_read(file, &PlayerCfg.ControlType, sizeof(ubyte), 1 )!=1)
goto read_player_file_failed;
else if (PHYSFS_read(file, &dummy_joy_sens, sizeof(ubyte), 1 )!=1)
@ -820,7 +817,7 @@ int write_player_file()
{
char filename[32];
PHYSFS_file *file;
int errno_ret;
int errno_ret, i;
if ( Newdemo_state == ND_STATE_PLAYBACK )
return -1;
@ -878,13 +875,18 @@ int write_player_file()
//write kconfig info
{
int i,j;
for(i=0;i<CONTROL_MAX_TYPES;i++) {
for(j=0;j<MAX_NOND1X_CONTROLS;j++) {
if(PHYSFS_write( file, &PlayerCfg.KeySettings[i][j], sizeof(PlayerCfg.KeySettings[i][j]), 1)!=1)
errno_ret=errno;
}
}
if (PHYSFS_write(file, PlayerCfg.KeySettings[0], sizeof(PlayerCfg.KeySettings[0]), 1) != 1)
errno_ret=errno;
if (PHYSFS_write(file, PlayerCfg.KeySettings[1], sizeof(PlayerCfg.KeySettings[1]), 1) != 1)
errno_ret=errno;
for (i = 0; i < MAX_CONTROLS*3; i++)
if (PHYSFS_write(file, "0", sizeof(ubyte), 1) != 1) // Skip obsolete Flightstick/Thrustmaster/Gravis map fields
errno_ret=errno;
if (PHYSFS_write(file, PlayerCfg.KeySettings[2], sizeof(PlayerCfg.KeySettings[2]), 1) != 1)
errno_ret=errno;
for (i = 0; i < MAX_CONTROLS; i++)
if (PHYSFS_write(file, "0", sizeof(ubyte), 1) != 1) // Skip obsolete Cyberman map field
errno_ret=errno;
if(errno_ret == EZERO)
{

View file

@ -53,7 +53,7 @@ typedef struct player_config
ubyte ControlType;
ubyte PrimaryOrder[MAX_PRIMARY_WEAPONS+1];
ubyte SecondaryOrder[MAX_SECONDARY_WEAPONS+1];
ubyte KeySettings[CONTROL_MAX_TYPES][MAX_CONTROLS];
ubyte KeySettings[3][MAX_CONTROLS];
ubyte KeySettingsD1X[MAX_D1X_CONTROLS];
int DefaultDifficulty;
int AutoLeveling;

View file

@ -745,8 +745,6 @@ extern char *Text_string[];
#define PRIMARY_WEAPON_NAMES_SHORT(weapon_num) (*(&TXT_W_LASER_S + (weapon_num)))
#define SECONDARY_WEAPON_NAMES_SHORT(weapon_num) (*(&TXT_W_C_MISSILE_S + (weapon_num)))
// Control configuration strings.
#define CONTROL_TEXT(control_type) (*(&TXT_CONTROL_KEYBOARD + (control_type)))
// Network connect states
#define CONNECT_STATES(state_num) (*(&TXT_NET_DISCONNECTED + (state_num)))
// Network dump strings