Overhaul for CONTROLS menu; Cleaned kconfig-code a little and slacked out keymap arrays
This commit is contained in:
parent
4733361212
commit
675d6d395a
|
@ -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
|
||||
|
|
175
main/kconfig.c
175
main/kconfig.c
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
|
105
main/menu.c
105
main/menu.c
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue