From 3d475504e3e26306241e4aee083afa958eef1b3d Mon Sep 17 00:00:00 2001 From: Oni Date: Sat, 12 Aug 2023 16:45:18 +0000 Subject: [PATCH] Merge branch 'reset-command' into 'master' Add 'reset' command to reset a cvar to its default value See merge request KartKrew/Kart!1382 --- src/command.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/command.c b/src/command.c index b21e76ba8..014dcb039 100644 --- a/src/command.c +++ b/src/command.c @@ -57,6 +57,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); @@ -354,6 +355,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); } @@ -1219,6 +1221,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 [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 // =========================================================================