gamecontrol has another index for player num, instead of being duplicated for players 2-4

This commit is contained in:
Sally Coolatta 2020-08-10 20:08:32 -04:00
parent a6b2bc99de
commit 7ac6723e46
9 changed files with 142 additions and 174 deletions

View file

@ -911,7 +911,7 @@ boolean CON_Responder(event_t *ev)
// let go keyup events, don't eat them
if (ev->type != ev_keydown && ev->type != ev_console)
{
if (ev->data1 == gamecontrol[gc_console][0] || ev->data1 == gamecontrol[gc_console][1])
if (ev->data1 == gamecontrol[0][gc_console][0] || ev->data1 == gamecontrol[0][gc_console][1])
consdown = false;
return false;
}
@ -929,7 +929,7 @@ boolean CON_Responder(event_t *ev)
INT32 i;
for (i = 0; i < num_gamecontrols; i++)
{
if (gamecontrol[i][0] == ev->data1 || gamecontrol[i][1] == ev->data1)
if (gamecontrol[0][i][0] == ev->data1 || gamecontrol[0][i][1] == ev->data1)
break;
}
@ -937,7 +937,7 @@ boolean CON_Responder(event_t *ev)
return false;
}
if (key == gamecontrol[gc_console][0] || key == gamecontrol[gc_console][1])
if (key == gamecontrol[0][gc_console][0] || key == gamecontrol[0][gc_console][1])
{
if (consdown) // ignore repeat
return true;

View file

@ -1023,12 +1023,8 @@ void D_StartTitle(void)
// The title screen is obviously not a tutorial! (Unless I'm mistaken)
if (tutorialmode && tutorialgcs)
{
G_CopyControls(gamecontrol, gamecontroldefault[gcs_custom], gcl_tutorial_full, num_gcl_tutorial_full); // using gcs_custom as temp storage
CV_SetValue(&cv_usemouse, tutorialusemouse);
CV_SetValue(&cv_alwaysfreelook, tutorialfreelook);
CV_SetValue(&cv_mousemove, tutorialmousemove);
CV_SetValue(&cv_analog[0], tutorialanalog);
M_StartMessage("Do you want to \x82save the recommended \x82movement controls?\x80\n\nPress 'Y' or 'Enter' to confirm\nPress 'N' or any key to keep \nyour current controls",
G_CopyControls(gamecontrol[0], gamecontroldefault[0][gcs_custom], gcl_full, num_gcl_full); // using gcs_custom as temp storage
M_StartMessage("Do you want to \x82save the recommended \x82controls?\x80\n\nPress 'Y' or 'Enter' to confirm\nPress 'N' or any key to keep \nyour current controls",
M_TutorialSaveControlResponse, MM_YESNO);
}

View file

@ -3168,11 +3168,7 @@ static void Command_Map_f(void)
if (tutorialmode && tutorialgcs)
{
G_CopyControls(gamecontrol, gamecontroldefault[gcs_custom], gcl_tutorial_full, num_gcl_tutorial_full); // using gcs_custom as temp storage
CV_SetValue(&cv_usemouse, tutorialusemouse);
CV_SetValue(&cv_alwaysfreelook, tutorialfreelook);
CV_SetValue(&cv_mousemove, tutorialmousemove);
CV_SetValue(&cv_analog[0], tutorialanalog);
G_CopyControls(gamecontrol[0], gamecontroldefault[0][gcs_custom], gcl_full, num_gcl_full); // using gcs_custom as temp storage
}
tutorialmode = false; // warping takes us out of tutorial mode

View file

@ -3982,41 +3982,28 @@ static boolean F_GetTextPromptTutorialTag(char *tag, INT32 length)
if (!tag || !tag[0] || !tutorialmode)
return false;
if (!strncmp(tag, "TAM", 3)) // Movement
gcs = G_GetControlScheme(gamecontrol, gcl_movement, num_gcl_movement);
else if (!strncmp(tag, "TAC", 3)) // Camera
{
// Check for gcl_movement so we can differentiate between FPS and Platform schemes.
gcs = G_GetControlScheme(gamecontrol, gcl_movement, num_gcl_movement);
if (gcs == gcs_custom) // try again, maybe we'll get a match
gcs = G_GetControlScheme(gamecontrol, gcl_camera, num_gcl_camera);
if (gcs == gcs_fps && !cv_usemouse.value)
gcs = gcs_platform; // Platform (arrow) scheme is stand-in for no mouse
}
else if (!strncmp(tag, "TAD", 3)) // Movement and Camera
gcs = G_GetControlScheme(gamecontrol, gcl_movement_camera, num_gcl_movement_camera);
else if (!strncmp(tag, "TAJ", 3)) // Jump
gcs = G_GetControlScheme(gamecontrol, gcl_jump, num_gcl_jump);
else if (!strncmp(tag, "TAS", 3)) // Spin
gcs = G_GetControlScheme(gamecontrol, gcl_use, num_gcl_use);
else if (!strncmp(tag, "TAA", 3)) // Char ability
gcs = G_GetControlScheme(gamecontrol, gcl_jump, num_gcl_jump);
else if (!strncmp(tag, "TAW", 3)) // Shield ability
gcs = G_GetControlScheme(gamecontrol, gcl_jump_use, num_gcl_jump_use);
if (!strncmp(tag, "TAA", 3)) // Accelerate
gcs = G_GetControlScheme(gamecontrol[0], gcl_accelerate, num_gcl_accelerate);
else if (!strncmp(tag, "TAB", 3)) // Brake
gcs = G_GetControlScheme(gamecontrol[0], gcl_brake, num_gcl_brake);
else if (!strncmp(tag, "TAD", 3)) // Drift
gcs = G_GetControlScheme(gamecontrol[0], gcl_drift, num_gcl_drift);
else if (!strncmp(tag, "TAS", 3)) // Spindash
gcs = G_GetControlScheme(gamecontrol[0], gcl_spindash, num_gcl_spindash);
else if (!strncmp(tag, "TAM", 3)) // Movement
gcs = G_GetControlScheme(gamecontrol[0], gcl_movement, num_gcl_movement);
else if (!strncmp(tag, "TAI", 3)) // Item usage
gcs = G_GetControlScheme(gamecontrol[0], gcl_item, num_gcl_item);
else
gcs = G_GetControlScheme(gamecontrol, gcl_tutorial_used, num_gcl_tutorial_used);
gcs = G_GetControlScheme(gamecontrol[0], gcl_full, num_gcl_full);
switch (gcs)
{
case gcs_fps:
// strncat(tag, "FPS", length);
case gcs_kart:
// strncat(tag, "KART", length);
suffixed = false;
break;
case gcs_platform:
strncat(tag, "PLATFORM", length);
break;
default:
strncat(tag, "CUSTOM", length);
break;

View file

@ -1467,7 +1467,7 @@ boolean G_Responder(event_t *ev)
// allow spy mode changes even during the demo
if (gamestate == GS_LEVEL && ev->type == ev_keydown
&& (ev->data1 == KEY_F12 || ev->data1 == gamecontrol[gc_viewpoint][0] || ev->data1 == gamecontrol[gc_viewpoint][1]))
&& (ev->data1 == KEY_F12 || ev->data1 == gamecontrol[0][gc_viewpoint][0] || ev->data1 == gamecontrol[0][gc_viewpoint][1]))
{
if (!demo.playback && (r_splitscreen || !netgame))
g_localplayers[0] = consoleplayer;
@ -1485,27 +1485,26 @@ boolean G_Responder(event_t *ev)
if (gamestate == GS_LEVEL && ev->type == ev_keydown && multiplayer && demo.playback && !demo.freecam)
{
if (ev->data1 == gamecontrolbis[gc_viewpoint][0] || ev->data1 == gamecontrolbis[gc_viewpoint][1])
if (ev->data1 == gamecontrol[1][gc_viewpoint][0] || ev->data1 == gamecontrol[1][gc_viewpoint][1])
{
G_AdjustView(2, 1, true);
return true;
}
else if (ev->data1 == gamecontrol3[gc_viewpoint][0] || ev->data1 == gamecontrol3[gc_viewpoint][1])
else if (ev->data1 == gamecontrol[2][gc_viewpoint][0] || ev->data1 == gamecontrol[2][gc_viewpoint][1])
{
G_AdjustView(3, 1, true);
return true;
}
else if (ev->data1 == gamecontrol4[gc_viewpoint][0] || ev->data1 == gamecontrol4[gc_viewpoint][1])
else if (ev->data1 == gamecontrol[3][gc_viewpoint][0] || ev->data1 == gamecontrol[3][gc_viewpoint][1])
{
G_AdjustView(4, 1, true);
return true;
}
// Allow pausing
if (
ev->data1 == gamecontrol[gc_pause][0]
|| ev->data1 == gamecontrol[gc_pause][1]
ev->data1 == gamecontrol[0][gc_pause][0]
|| ev->data1 == gamecontrol[0][gc_pause][1]
|| ev->data1 == KEY_PAUSE
)
{
@ -1540,8 +1539,8 @@ boolean G_Responder(event_t *ev)
switch (ev->type)
{
case ev_keydown:
if (ev->data1 == gamecontrol[gc_pause][0]
|| ev->data1 == gamecontrol[gc_pause][1]
if (ev->data1 == gamecontrol[0][gc_pause][0]
|| ev->data1 == gamecontrol[0][gc_pause][1]
|| ev->data1 == KEY_PAUSE)
{
if (modeattacking && !demoplayback && (gamestate == GS_LEVEL))

View file

@ -819,13 +819,11 @@ void G_ClearControlKeys(INT32 (*setupcontrols)[2], INT32 control)
void G_ClearAllControlKeys(void)
{
INT32 i;
INT32 i, j;
for (i = 0; i < num_gamecontrols; i++)
{
G_ClearControlKeys(gamecontrol, i);
G_ClearControlKeys(gamecontrolbis, i);
G_ClearControlKeys(gamecontrol3, i);
G_ClearControlKeys(gamecontrol4, i);
for (j = 0; j < MAXSPLITSCREENPLAYERS; j++)
G_ClearControlKeys(gamecontrol[j], i);
}
}
@ -885,63 +883,63 @@ void G_DefineDefaultControls(void)
INT32 i, j;
// Keyboard controls
gamecontrol[0][gcs_kart][gc_aimforward ][0] = KEY_UPARROW;
gamecontrol[0][gcs_kart][gc_aimbackward][0] = KEY_DOWNARROW;
gamecontrol[0][gcs_kart][gc_turnleft ][0] = KEY_LEFTARROW;
gamecontrol[0][gcs_kart][gc_turnright ][0] = KEY_RIGHTARROW;
gamecontrol[0][gcs_kart][gc_accelerate ][0] = 'a';
gamecontrol[0][gcs_kart][gc_drift ][0] = 's';
gamecontrol[0][gcs_kart][gc_brake ][0] = 'd';
gamecontrol[0][gcs_kart][gc_fire ][0] = KEY_SPACE;
gamecontrol[0][gcs_kart][gc_lookback ][0] = KEY_LSHIFT;
gamecontroldefault[0][gcs_kart][gc_aimforward ][0] = KEY_UPARROW;
gamecontroldefault[0][gcs_kart][gc_aimbackward][0] = KEY_DOWNARROW;
gamecontroldefault[0][gcs_kart][gc_turnleft ][0] = KEY_LEFTARROW;
gamecontroldefault[0][gcs_kart][gc_turnright ][0] = KEY_RIGHTARROW;
gamecontroldefault[0][gcs_kart][gc_accelerate ][0] = 'a';
gamecontroldefault[0][gcs_kart][gc_drift ][0] = 's';
gamecontroldefault[0][gcs_kart][gc_brake ][0] = 'd';
gamecontroldefault[0][gcs_kart][gc_fire ][0] = KEY_SPACE;
gamecontroldefault[0][gcs_kart][gc_lookback ][0] = KEY_LSHIFT;
gamecontrol[0][gcs_kart][gc_pause ][0] = KEY_PAUSE;
gamecontrol[0][gcs_kart][gc_console ][0] = KEY_CONSOLE;
gamecontrol[0][gcs_kart][gc_screenshot ][0] = KEY_F8;
gamecontrol[0][gcs_kart][gc_recordgif ][0] = KEY_F9;
gamecontrol[0][gcs_kart][gc_viewpoint ][0] = KEY_F12;
gamecontrol[0][gcs_kart][gc_talkkey ][0] = 't';
//gamecontrol[0][gcs_kart][gc_teamkey ][0] = 'y';
gamecontrol[0][gcs_kart][gc_scores ][0] = KEY_TAB;
gamecontrol[0][gcs_kart][gc_spectate ][0] = '\'';
gamecontrol[0][gcs_kart][gc_lookup ][0] = KEY_PGUP;
gamecontrol[0][gcs_kart][gc_lookdown ][0] = KEY_PGDN;
gamecontrol[0][gcs_kart][gc_centerview ][0] = KEY_END;
gamecontrol[0][gcs_kart][gc_camreset ][0] = KEY_HOME;
gamecontrol[0][gcs_kart][gc_camtoggle ][0] = KEY_BACKSPACE;
gamecontroldefault[0][gcs_kart][gc_pause ][0] = KEY_PAUSE;
gamecontroldefault[0][gcs_kart][gc_console ][0] = KEY_CONSOLE;
gamecontroldefault[0][gcs_kart][gc_screenshot ][0] = KEY_F8;
gamecontroldefault[0][gcs_kart][gc_recordgif ][0] = KEY_F9;
gamecontroldefault[0][gcs_kart][gc_viewpoint ][0] = KEY_F12;
gamecontroldefault[0][gcs_kart][gc_talkkey ][0] = 't';
//gamecontroldefault[0][gcs_kart][gc_teamkey ][0] = 'y';
gamecontroldefault[0][gcs_kart][gc_scores ][0] = KEY_TAB;
gamecontroldefault[0][gcs_kart][gc_spectate ][0] = '\'';
gamecontroldefault[0][gcs_kart][gc_lookup ][0] = KEY_PGUP;
gamecontroldefault[0][gcs_kart][gc_lookdown ][0] = KEY_PGDN;
gamecontroldefault[0][gcs_kart][gc_centerview ][0] = KEY_END;
gamecontroldefault[0][gcs_kart][gc_camreset ][0] = KEY_HOME;
gamecontroldefault[0][gcs_kart][gc_camtoggle ][0] = KEY_BACKSPACE;
for (i = gcs_custom+1; i < num_gamecontrolschemes; i++) // skip gcs_custom
{
// Gamepad controls -- same for all schemes
gamecontrol[0][j][gc_accelerate ][1] = KEY_JOY1+0; // A
gamecontrol[0][j][gc_lookback ][1] = KEY_JOY1+2; // X
gamecontrol[0][j][gc_brake ][1] = KEY_JOY1+1; // B
gamecontrol[0][j][gc_fire ][1] = KEY_JOY1+4; // LB
gamecontrol[0][j][gc_drift ][1] = KEY_JOY1+5; // RB
gamecontroldefault[0][j][gc_accelerate ][1] = KEY_JOY1+0; // A
gamecontroldefault[0][j][gc_lookback ][1] = KEY_JOY1+2; // X
gamecontroldefault[0][j][gc_brake ][1] = KEY_JOY1+1; // B
gamecontroldefault[0][j][gc_fire ][1] = KEY_JOY1+4; // LB
gamecontroldefault[0][j][gc_drift ][1] = KEY_JOY1+5; // RB
gamecontrol[0][j][gc_viewpoint ][1] = KEY_JOY1+3; // Y
gamecontrol[0][j][gc_pause ][1] = KEY_JOY1+6; // Back
gamecontrol[0][j][gc_systemmenu ][0] = KEY_JOY1+7; // Start
gamecontrol[0][j][gc_talkkey ][1] = KEY_HAT1+1; // D-Pad Down
gamecontrol[0][j][gc_scores ][1] = KEY_HAT1+0; // D-Pad Up
gamecontroldefault[0][j][gc_viewpoint ][1] = KEY_JOY1+3; // Y
gamecontroldefault[0][j][gc_pause ][1] = KEY_JOY1+6; // Back
gamecontroldefault[0][j][gc_systemmenu ][0] = KEY_JOY1+7; // Start
gamecontroldefault[0][j][gc_talkkey ][1] = KEY_HAT1+1; // D-Pad Down
gamecontroldefault[0][j][gc_scores ][1] = KEY_HAT1+0; // D-Pad Up
gamecontrol[1][i][gc_accelerate ][0] = KEY_2JOY1+0; // A
gamecontrol[1][i][gc_lookback ][0] = KEY_2JOY1+2; // X
gamecontrol[1][i][gc_brake ][0] = KEY_2JOY1+1; // B
gamecontrol[1][i][gc_fire ][0] = KEY_2JOY1+4; // LB
gamecontrol[1][i][gc_drift ][0] = KEY_2JOY1+5; // RB
gamecontroldefault[1][i][gc_accelerate ][0] = KEY_2JOY1+0; // A
gamecontroldefault[1][i][gc_lookback ][0] = KEY_2JOY1+2; // X
gamecontroldefault[1][i][gc_brake ][0] = KEY_2JOY1+1; // B
gamecontroldefault[1][i][gc_fire ][0] = KEY_2JOY1+4; // LB
gamecontroldefault[1][i][gc_drift ][0] = KEY_2JOY1+5; // RB
gamecontrol[2][i][gc_accelerate ][0] = KEY_3JOY1+0; // A
gamecontrol[2][i][gc_lookback ][0] = KEY_3JOY1+2; // X
gamecontrol[2][i][gc_brake ][0] = KEY_3JOY1+1; // B
gamecontrol[2][i][gc_fire ][0] = KEY_3JOY1+4; // LB
gamecontrol[2][i][gc_drift ][0] = KEY_3JOY1+5; // RB
gamecontroldefault[2][i][gc_accelerate ][0] = KEY_3JOY1+0; // A
gamecontroldefault[2][i][gc_lookback ][0] = KEY_3JOY1+2; // X
gamecontroldefault[2][i][gc_brake ][0] = KEY_3JOY1+1; // B
gamecontroldefault[2][i][gc_fire ][0] = KEY_3JOY1+4; // LB
gamecontroldefault[2][i][gc_drift ][0] = KEY_3JOY1+5; // RB
gamecontrol[3][i][gc_accelerate ][0] = KEY_3JOY1+0; // A
gamecontrol[3][i][gc_lookback ][0] = KEY_3JOY1+2; // X
gamecontrol[3][i][gc_brake ][0] = KEY_3JOY1+1; // B
gamecontrol[3][i][gc_fire ][0] = KEY_3JOY1+4; // LB
gamecontrol[3][i][gc_drift ][0] = KEY_3JOY1+5; // RB
gamecontroldefault[3][i][gc_accelerate ][0] = KEY_3JOY1+0; // A
gamecontroldefault[3][i][gc_lookback ][0] = KEY_3JOY1+2; // X
gamecontroldefault[3][i][gc_brake ][0] = KEY_3JOY1+1; // B
gamecontroldefault[3][i][gc_fire ][0] = KEY_3JOY1+4; // LB
gamecontroldefault[3][i][gc_drift ][0] = KEY_3JOY1+5; // RB
}
}
@ -956,10 +954,10 @@ INT32 G_GetControlScheme(INT32 (*fromcontrols)[2], const INT32 *gclist, INT32 gc
for (j = 0; j < (gclist && gclen ? gclen : num_gamecontrols); j++)
{
gc = (gclist && gclen) ? gclist[j] : j;
if (((fromcontrols[gc][0] && gamecontroldefault[i][gc][0]) ? fromcontrols[gc][0] != gamecontroldefault[i][gc][0] : true) &&
((fromcontrols[gc][0] && gamecontroldefault[i][gc][1]) ? fromcontrols[gc][0] != gamecontroldefault[i][gc][1] : true) &&
((fromcontrols[gc][1] && gamecontroldefault[i][gc][0]) ? fromcontrols[gc][1] != gamecontroldefault[i][gc][0] : true) &&
((fromcontrols[gc][1] && gamecontroldefault[i][gc][1]) ? fromcontrols[gc][1] != gamecontroldefault[i][gc][1] : true))
if (((fromcontrols[gc][0] && gamecontroldefault[0][i][gc][0]) ? fromcontrols[gc][0] != gamecontroldefault[0][i][gc][0] : true) &&
((fromcontrols[gc][0] && gamecontroldefault[0][i][gc][1]) ? fromcontrols[gc][0] != gamecontroldefault[0][i][gc][1] : true) &&
((fromcontrols[gc][1] && gamecontroldefault[0][i][gc][0]) ? fromcontrols[gc][1] != gamecontroldefault[0][i][gc][0] : true) &&
((fromcontrols[gc][1] && gamecontroldefault[0][i][gc][1]) ? fromcontrols[gc][1] != gamecontroldefault[0][i][gc][1] : true))
{
skipscheme = true;
break;
@ -984,17 +982,17 @@ void G_CopyControls(INT32 (*setupcontrols)[2], INT32 (*fromcontrols)[2], const I
}
}
void G_SaveKeySetting(FILE *f, INT32 (*fromcontrols)[2], INT32 (*fromcontrolsbis)[2])
void G_SaveKeySetting(FILE *f, INT32 (*fromcontrols)[2])
{
INT32 i;
for (i = 1; i < num_gamecontrols; i++)
{
fprintf(f, "setcontrol \"%s\" \"%s\"", gamecontrolname[i],
G_KeynumToString(fromcontrols[i][0]));
G_KeynumToString(fromcontrols[0][i][0]));
if (fromcontrols[i][1])
fprintf(f, " \"%s\"\n", G_KeynumToString(fromcontrols[i][1]));
if (fromcontrols[0][i][1])
fprintf(f, " \"%s\"\n", G_KeynumToString(fromcontrols[0][i][1]));
else
fprintf(f, "\n");
}
@ -1002,10 +1000,10 @@ void G_SaveKeySetting(FILE *f, INT32 (*fromcontrols)[2], INT32 (*fromcontrolsbis
for (i = 1; i < num_gamecontrols; i++)
{
fprintf(f, "setcontrol2 \"%s\" \"%s\"", gamecontrolname[i],
G_KeynumToString(fromcontrolsbis[i][0]));
G_KeynumToString(fromcontrols[1][i][0]));
if (fromcontrolsbis[i][1])
fprintf(f, " \"%s\"\n", G_KeynumToString(fromcontrolsbis[i][1]));
if (fromcontrols[1][i][1])
fprintf(f, " \"%s\"\n", G_KeynumToString(fromcontrols[1][i][1]));
else
fprintf(f, "\n");
}
@ -1013,10 +1011,10 @@ void G_SaveKeySetting(FILE *f, INT32 (*fromcontrols)[2], INT32 (*fromcontrolsbis
for (i = 1; i < num_gamecontrols; i++)
{
fprintf(f, "setcontrol3 \"%s\" \"%s\"", gamecontrolname[i],
G_KeynumToString(gamecontrol3[i][0]));
G_KeynumToString(fromcontrols[2][i][0]));
if (gamecontrol3[i][1])
fprintf(f, " \"%s\"\n", G_KeynumToString(gamecontrol3[i][1]));
if (fromcontrols[2][i][1])
fprintf(f, " \"%s\"\n", G_KeynumToString(fromcontrols[2][i][1]));
else
fprintf(f, "\n");
}
@ -1024,10 +1022,10 @@ void G_SaveKeySetting(FILE *f, INT32 (*fromcontrols)[2], INT32 (*fromcontrolsbis
for (i = 1; i < num_gamecontrols; i++)
{
fprintf(f, "setcontrol4 \"%s\" \"%s\"", gamecontrolname[i],
G_KeynumToString(gamecontrol4[i][0]));
G_KeynumToString(fromcontrols[3][i][0]));
if (gamecontrol4[i][1])
fprintf(f, " \"%s\"\n", G_KeynumToString(gamecontrol4[i][1]));
if (fromcontrols[3][i][1])
fprintf(f, " \"%s\"\n", G_KeynumToString(fromcontrols[3][i][1]));
else
fprintf(f, "\n");
}
@ -1094,13 +1092,10 @@ static INT32 G_FilterKeyByVersion(INT32 numctrl, INT32 keyidx, INT32 player, INT
boolean defaultoverride = false;
// get the default gamecontrol
if (player == 0 && numctrl == gc_systemmenu)
defaultkey = gamecontrol[numctrl][0];
else
defaultkey = (player == 1 ? gamecontrolbis[numctrl][0] : gamecontrol[numctrl][1]);
defaultkey = gamecontrol[player][numctrl][0];
// Assign joypad button defaults if there is an open slot.
// At this point, gamecontrol/bis should have the default controls
// At this point, gamecontrol should have the default controls
// (unless LOADCONFIG is being run)
//
// If the player runs SETCONTROL in-game, this block should not be reached
@ -1190,11 +1185,11 @@ static void setcontrol(INT32 (*gc)[2])
INT32 player;
boolean nestedoverride = false;
if ((void*)gc == (void*)&gamecontrol4)
if ((void*)gc == (void*)&gamecontrol[3])
player = 3;
else if ((void*)gc == (void*)&gamecontrol3)
else if ((void*)gc == (void*)&gamecontrol[2])
player = 2;
else if ((void*)gc == (void*)&gamecontrolbis)
else if ((void*)gc == (void*)&gamecontrol[1])
player = 1;
else
player = 0;
@ -1257,7 +1252,7 @@ void Command_Setcontrol_f(void)
return;
}
setcontrol(gamecontrol);
setcontrol(gamecontrol[0]);
}
void Command_Setcontrol2_f(void)
@ -1272,7 +1267,7 @@ void Command_Setcontrol2_f(void)
return;
}
setcontrol(gamecontrolbis);
setcontrol(gamecontrol[1]);
}
void Command_Setcontrol3_f(void)
@ -1287,7 +1282,7 @@ void Command_Setcontrol3_f(void)
return;
}
setcontrol(gamecontrol3);
setcontrol(gamecontrol[2]);
}
void Command_Setcontrol4_f(void)
@ -1302,5 +1297,5 @@ void Command_Setcontrol4_f(void)
return;
}
setcontrol(gamecontrol4);
setcontrol(gamecontrol[3]);
}

View file

@ -1164,7 +1164,7 @@ boolean HU_Responder(event_t *ev)
INT32 i;
for (i = 0; i < num_gamecontrols; i++)
{
if (gamecontrol[i][0] == ev->data1 || gamecontrol[i][1] == ev->data1)
if (gamecontrol[0][i][0] == ev->data1 || gamecontrol[0][i][1] == ev->data1)
break;
}
@ -1176,7 +1176,7 @@ boolean HU_Responder(event_t *ev)
if (!chat_on)
{
// enter chat mode
if ((ev->data1 == gamecontrol[gc_talkkey][0] || ev->data1 == gamecontrol[gc_talkkey][1])
if ((ev->data1 == gamecontrol[0][gc_talkkey][0] || ev->data1 == gamecontrol[0][gc_talkkey][1])
&& netgame && !OLD_MUTE) // check for old chat mute, still let the players open the chat incase they want to scroll otherwise.
{
chat_on = true;
@ -1186,7 +1186,7 @@ boolean HU_Responder(event_t *ev)
typelines = 1;
return true;
}
if ((ev->data1 == gamecontrol[gc_teamkey][0] || ev->data1 == gamecontrol[gc_teamkey][1])
if ((ev->data1 == gamecontrol[0][gc_teamkey][0] || ev->data1 == gamecontrol[0][gc_teamkey][1])
&& netgame && !OLD_MUTE)
{
chat_on = true;
@ -1211,8 +1211,8 @@ boolean HU_Responder(event_t *ev)
// Ignore non-keyboard keys, except when the talk key is bound
if (ev->data1 >= KEY_MOUSE1
&& (ev->data1 != gamecontrol[gc_talkkey][0]
&& ev->data1 != gamecontrol[gc_talkkey][1]))
&& (ev->data1 != gamecontrol[0][gc_talkkey][0]
&& ev->data1 != gamecontrol[0][gc_talkkey][1]))
return false;
c = CON_ShiftChar(c);
@ -1274,8 +1274,8 @@ boolean HU_Responder(event_t *ev)
I_UpdateMouseGrab();
}
else if (c == KEY_ESCAPE
|| ((c == gamecontrol[gc_talkkey][0] || c == gamecontrol[gc_talkkey][1]
|| c == gamecontrol[gc_teamkey][0] || c == gamecontrol[gc_teamkey][1])
|| ((c == gamecontrol[0][gc_talkkey][0] || c == gamecontrol[0][gc_talkkey][1]
|| c == gamecontrol[0][gc_teamkey][0] || c == gamecontrol[0][gc_teamkey][1])
&& c >= KEY_MOUSE1)) // If it's not a keyboard key, then the chat button is used as a toggle.
{
chat_on = false;

View file

@ -2588,9 +2588,9 @@ boolean M_Responder(event_t *ev)
if (ch == -1)
return false;
else if (ch == gamecontrol[gc_systemmenu][0] || ch == gamecontrol[gc_systemmenu][1]) // allow remappable ESC key
else if (ch == gamecontrol[0][gc_systemmenu][0] || ch == gamecontrol[0][gc_systemmenu][1]) // allow remappable ESC key
ch = KEY_ESCAPE;
else if ((ch == gamecontrol[gc_accelerate][0] || ch == gamecontrol[gc_accelerate][1]) && ch >= KEY_MOUSE1)
else if ((ch == gamecontrol[0][gc_accelerate][0] || ch == gamecontrol[0][gc_accelerate][1]) && ch >= KEY_MOUSE1)
ch = KEY_ENTER;
// F-Keys
@ -2668,7 +2668,7 @@ boolean M_Responder(event_t *ev)
return false;
}
if ((ch == gamecontrol[gc_brake][0] || ch == gamecontrol[gc_brake][1]) && ch >= KEY_MOUSE1) // do this here, otherwise brake opens the menu mid-game
if ((ch == gamecontrol[0][gc_brake][0] || ch == gamecontrol[0][gc_brake][1]) && ch >= KEY_MOUSE1) // do this here, otherwise brake opens the menu mid-game
ch = KEY_ESCAPE;
routine = currentMenu->menuitems[itemOn].itemaction;
@ -9670,7 +9670,7 @@ static void M_HandleSetupMultiPlayer(INT32 choice)
size_t l;
boolean exitmenu = false; // exit to previous menu and send name change
if ((choice == gamecontrol[gc_fire][0] || choice == gamecontrol[gc_fire][1]) && itemOn == 2)
if ((choice == gamecontrol[0][gc_fire][0] || choice == gamecontrol[0][gc_fire][1]) && itemOn == 2)
choice = KEY_BACKSPACE; // Hack to allow resetting prefcolor on controllers
switch (choice)
@ -10311,7 +10311,7 @@ static void M_Setup1PControlsMenu(INT32 choice)
{
(void)choice;
setupcontrolplayer = 1;
setupcontrols = gamecontrol; // was called from main Options (for console player, then)
setupcontrols = gamecontrol[0]; // was called from main Options (for console player, then)
currentMenu->lastOn = itemOn;
// Set proper gamepad options
@ -10343,7 +10343,7 @@ static void M_Setup2PControlsMenu(INT32 choice)
{
(void)choice;
setupcontrolplayer = 2;
setupcontrols = gamecontrolbis;
setupcontrols = gamecontrol[1];
currentMenu->lastOn = itemOn;
// Set proper gamepad options
@ -10375,7 +10375,7 @@ static void M_Setup3PControlsMenu(INT32 choice)
{
(void)choice;
setupcontrolplayer = 3;
setupcontrols = gamecontrol3;
setupcontrols = gamecontrol[2];
currentMenu->lastOn = itemOn;
// Set proper gamepad options
@ -10407,7 +10407,7 @@ static void M_Setup4PControlsMenu(INT32 choice)
{
(void)choice;
setupcontrolplayer = 4;
setupcontrols = gamecontrol4;
setupcontrols = gamecontrol[3];
currentMenu->lastOn = itemOn;
// Set proper gamepad options
@ -10680,17 +10680,17 @@ static void M_ResetControlsResponse(INT32 ch)
switch (setupcontrolplayer)
{
case 4:
G_ClearControlKeys(gamecontrol4, i);
G_ClearControlKeys(gamecontrol[3], i);
break;
case 3:
G_ClearControlKeys(gamecontrol3, i);
G_ClearControlKeys(gamecontrol[2], i);
break;
case 2:
G_ClearControlKeys(gamecontrolbis, i);
G_ClearControlKeys(gamecontrol[1], i);
break;
case 1:
default:
G_ClearControlKeys(gamecontrol, i);
G_ClearControlKeys(gamecontrol[0], i);
break;
}
}

View file

@ -479,6 +479,8 @@ void Command_SaveConfig_f(void)
*/
void Command_LoadConfig_f(void)
{
UINT8 i;
if (COM_Argc() != 2)
{
CONS_Printf(M_GetText("loadconfig <filename[.cfg]> : load config from a file\n"));
@ -490,8 +492,11 @@ void Command_LoadConfig_f(void)
// load default control
G_ClearAllControlKeys();
G_CopyControls(gamecontrol, gamecontroldefault[gcs_fps], NULL, 0);
G_CopyControls(gamecontrolbis, gamecontrolbisdefault[gcs_fps], NULL, 0);
for (i = 0; i < MAXSPLITSCREENPLAYERS; i++)
{
G_CopyControls(gamecontrol[i], gamecontroldefault[i][gcs_kart], NULL, 0);
}
// temporarily reset execversion to default
CV_ToggleExecVersion(true);
@ -539,8 +544,11 @@ void M_FirstLoadConfig(void)
// load default control
G_DefineDefaultControls();
G_CopyControls(gamecontrol, gamecontroldefault[gcs_fps], NULL, 0);
G_CopyControls(gamecontrolbis, gamecontrolbisdefault[gcs_fps], NULL, 0);
for (i = 0; i < MAXSPLITSCREENPLAYERS; i++)
{
G_CopyControls(gamecontrol[i], gamecontroldefault[i][gcs_kart], NULL, 0);
}
// register execversion here before we load any configs
CV_RegisterVar(&cv_execversion);
@ -634,27 +642,14 @@ void M_SaveConfig(const char *filename)
// FIXME: save key aliases if ever implemented..
if (tutorialmode && tutorialgcs)
{
CV_SetValue(&cv_usemouse, tutorialusemouse);
CV_SetValue(&cv_alwaysfreelook, tutorialfreelook);
CV_SetValue(&cv_mousemove, tutorialmousemove);
CV_SetValue(&cv_analog[0], tutorialanalog);
CV_SaveVariables(f);
CV_Set(&cv_usemouse, cv_usemouse.defaultvalue);
CV_Set(&cv_alwaysfreelook, cv_alwaysfreelook.defaultvalue);
CV_Set(&cv_mousemove, cv_mousemove.defaultvalue);
CV_Set(&cv_analog[0], cv_analog[0].defaultvalue);
}
else
CV_SaveVariables(f);
CV_SaveVariables(f);
if (!dedicated)
{
if (tutorialmode && tutorialgcs)
G_SaveKeySetting(f, gamecontroldefault[gcs_custom], gamecontrolbis); // using gcs_custom as temp storage
G_SaveKeySetting(f, gamecontroldefault[0][gcs_custom], gamecontrol[1]); // using gcs_custom as temp storage
else
G_SaveKeySetting(f, gamecontrol, gamecontrolbis);
G_SaveKeySetting(f, gamecontrol[0], gamecontrol[1]);
}
fclose(f);
@ -1617,9 +1612,9 @@ boolean M_ScreenshotResponder(event_t *ev)
if (ch >= KEY_MOUSE1 && menuactive) // If it's not a keyboard key, then don't allow it in the menus!
return false;
if (ch == KEY_F8 || ch == gamecontrol[gc_screenshot][0] || ch == gamecontrol[gc_screenshot][1]) // remappable F8
if (ch == KEY_F8 || ch == gamecontrol[0][gc_screenshot][0] || ch == gamecontrol[0][gc_screenshot][1]) // remappable F8
M_ScreenShot();
else if (ch == KEY_F9 || ch == gamecontrol[gc_recordgif][0] || ch == gamecontrol[gc_recordgif][1]) // remappable F9
else if (ch == KEY_F9 || ch == gamecontrol[0][gc_recordgif][0] || ch == gamecontrol[0][gc_recordgif][1]) // remappable F9
((moviemode) ? M_StopMovie : M_StartMovie)();
else
return false;