diff --git a/src/g_input.c b/src/g_input.c index 4bcd521fe..2af3174ab 100644 --- a/src/g_input.c +++ b/src/g_input.c @@ -963,19 +963,9 @@ void G_DefineDefaultControls(void) menucontrolreserved[gc_start][0] = KEY_ESCAPE; // Handled special } -void G_CopyControls(INT32 (*setupcontrols)[MAXINPUTMAPPING], INT32 (*fromcontrols)[MAXINPUTMAPPING], const INT32 *gclist, INT32 gclen) +void G_ApplyControlScheme(UINT8 splitplayer, INT32 (*fromcontrols)[MAXINPUTMAPPING]) { - INT32 i, j, gc; - - for (i = 0; i < (gclist && gclen ? gclen : num_gamecontrols); i++) - { - gc = (gclist && gclen) ? gclist[i] : i; - - for (j = 0; j < MAXINPUTMAPPING; j++) - { - setupcontrols[gc][j] = fromcontrols[gc][j]; - } - } + memcpy(gamecontrol[splitplayer], fromcontrols, sizeof gamecontrol[splitplayer]); } void G_SaveKeySetting(FILE *f, INT32 (*fromcontrolsa)[MAXINPUTMAPPING], INT32 (*fromcontrolsb)[MAXINPUTMAPPING], INT32 (*fromcontrolsc)[MAXINPUTMAPPING], INT32 (*fromcontrolsd)[MAXINPUTMAPPING]) diff --git a/src/g_input.h b/src/g_input.h index f2b8e6ca8..f149d01bc 100644 --- a/src/g_input.h +++ b/src/g_input.h @@ -194,7 +194,7 @@ void Command_Setcontrol3_f(void); void Command_Setcontrol4_f(void); void G_DefineDefaultControls(void); INT32 G_GetControlScheme(INT32 (*fromcontrols)[MAXINPUTMAPPING], const INT32 *gclist, INT32 gclen); -void G_CopyControls(INT32 (*setupcontrols)[MAXINPUTMAPPING], INT32 (*fromcontrols)[MAXINPUTMAPPING], const INT32 *gclist, INT32 gclen); +void G_ApplyControlScheme(UINT8 splitplayer, INT32 (*fromcontrols)[MAXINPUTMAPPING]); void G_SaveKeySetting(FILE *f, INT32 (*fromcontrolsa)[MAXINPUTMAPPING], INT32 (*fromcontrolsb)[MAXINPUTMAPPING], INT32 (*fromcontrolsc)[MAXINPUTMAPPING], INT32 (*fromcontrolsd)[MAXINPUTMAPPING]); INT32 G_CheckDoubleUsage(INT32 keynum, INT32 playernum, boolean modify); diff --git a/src/k_profiles.c b/src/k_profiles.c index a65da05cc..a9d433855 100644 --- a/src/k_profiles.c +++ b/src/k_profiles.c @@ -497,7 +497,7 @@ static void PR_ApplyProfile_Settings(profile_t *p, UINT8 playernum) CV_StealthSetValue(&cv_rumble[playernum], p->rumble); // set controls... - memcpy(&gamecontrol[playernum], p->controls, sizeof(gamecontroldefault)); + G_ApplyControlScheme(playernum, p->controls); } static void PR_ApplyProfile_Memory(UINT8 profilenum, UINT8 playernum) diff --git a/src/m_misc.cpp b/src/m_misc.cpp index 4a494f335..ce4eda4c0 100644 --- a/src/m_misc.cpp +++ b/src/m_misc.cpp @@ -577,7 +577,7 @@ void Command_LoadConfig_f(void) for (i = 0; i < MAXSPLITSCREENPLAYERS; i++) { - G_CopyControls(gamecontrol[i], gamecontroldefault, NULL, 0); + G_ApplyControlScheme(i, gamecontroldefault); } // temporarily reset execversion to default @@ -631,7 +631,7 @@ void M_FirstLoadConfig(void) for (i = 0; i < MAXSPLITSCREENPLAYERS; i++) { - G_CopyControls(gamecontrol[i], gamecontroldefault, NULL, 0); + G_ApplyControlScheme(i, gamecontroldefault); } // register execversion here before we load any configs diff --git a/src/menus/options-profiles-edit-controls.c b/src/menus/options-profiles-edit-controls.c index 15064b7bb..9adac3dd1 100644 --- a/src/menus/options-profiles-edit-controls.c +++ b/src/menus/options-profiles-edit-controls.c @@ -219,7 +219,7 @@ void M_ProfileTryController(INT32 choice) optionsmenu.trycontroller = TICRATE*5; // Apply these controls right now on P1's end. - memcpy(&gamecontrol[0], optionsmenu.tempcontrols, sizeof(gamecontroldefault)); + G_ApplyControlScheme(0, optionsmenu.tempcontrols); } static void M_ProfileControlSaveResponse(INT32 choice) @@ -234,7 +234,7 @@ static void M_ProfileControlSaveResponse(INT32 choice) // Don't apply the profile itself as that would lead to issues mid-game. if (belongsto > -1 && belongsto < MAXSPLITSCREENPLAYERS) { - memcpy(&gamecontrol[belongsto], optionsmenu.tempcontrols, sizeof(gamecontroldefault)); + G_ApplyControlScheme(belongsto, optionsmenu.tempcontrols); } } else @@ -325,7 +325,7 @@ boolean M_ProfileControlsInputs(INT32 ch) profile_t *cpr = PR_GetProfile(cv_currprofile.value); if (cpr == NULL) cpr = PR_GetProfile(0); // Creating a profile at boot, revert to guest profile - memcpy(&gamecontrol[0], cpr->controls, sizeof(gamecontroldefault)); + G_ApplyControlScheme(0, cpr->controls); } return true; diff --git a/src/menus/play-char-select.c b/src/menus/play-char-select.c index 1fbdccbb0..80352f312 100644 --- a/src/menus/play-char-select.c +++ b/src/menus/play-char-select.c @@ -502,7 +502,7 @@ static boolean M_HandlePressStart(setup_player_t *p, UINT8 num) else if (num) { // For any player past player 1, set controls to default profile controls, otherwise it's generally awful to do any menuing... - memcpy(&gamecontrol[num], gamecontroldefault, sizeof(gamecontroldefault)); + G_ApplyControlScheme(num, gamecontroldefault); } G_SetDeviceForPlayer(num, device);