Add 'reset' command to reset a cvar to its default value

This commit is contained in:
James R 2023-08-11 13:08:11 -07:00
parent f2b9b70d85
commit ccd1450b73

View file

@ -58,6 +58,7 @@ static void COM_Toggle_f(void);
static void COM_Add_f(void);
static void COM_Choose_f(void);
static void COM_ChooseWeighted_f(void);
static void COM_Reset_f(void);
static void CV_EnforceExecVersion(void);
static boolean CV_FilterVarByVersion(consvar_t *v, const char *valstr);
@ -383,6 +384,7 @@ void COM_Init(void)
COM_AddCommand("add", COM_Add_f);
COM_AddCommand("choose", COM_Choose_f);
COM_AddCommand("chooseweighted", COM_ChooseWeighted_f);
COM_AddCommand("reset", COM_Reset_f);
RegisterNetXCmd(XD_NETVAR, Got_NetVar);
}
@ -1218,6 +1220,36 @@ static void COM_ChooseWeighted_f(void)
}
}
static void COM_Reset_f(void)
{
size_t i;
if (COM_Argc() < 2)
{
CONS_Printf(M_GetText("reset <cvar1> [cvar2] [...]: Resets a cvar to its default value\n"));
return;
}
for (i = 1; i < COM_Argc(); ++i)
{
consvar_t *cvar = CV_FindVar(COM_Argv(i));
if (!cvar)
{
CONS_Alert(CONS_NOTICE, M_GetText("%s is not a cvar\n"), COM_Argv(i));
continue;
}
CV_Set(cvar, cvar->defaultvalue);
// Sometimes a cvar cannot be changed, e.g. CV_NETVAR without admin privilege.
if (!stricmp(cvar->string, cvar->defaultvalue))
{
CONS_Printf("%s = %s\n", cvar->name, cvar->string);
}
}
}
// =========================================================================
// VARIABLE SIZE BUFFERS
// =========================================================================