]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cvar.c
changed most COM_ParseToken calls to COM_ParseTokenConsole, this fixed the kills...
[xonotic/darkplaces.git] / cvar.c
diff --git a/cvar.c b/cvar.c
index 886ea96e8b2385b842e86d2d0491f4bb8cde476c..fb08b237345fa9b05a5f6c3fe9381965e7d56723 100644 (file)
--- a/cvar.c
+++ b/cvar.c
@@ -246,12 +246,8 @@ void Cvar_SetQuick_Internal (cvar_t *var, const char *value)
                }
        }
 #endif
-       if ((var->flags & CVAR_USERINFO) && changed && cls.state != ca_dedicated)
-       {
-               InfoString_SetValue(cls.userinfo, sizeof(cls.userinfo), var->name, var->string);
-               if (cls.state == ca_connected)
-                       Cmd_ForwardStringToServer(va("setinfo \"%s\" \"%s\"\n", var->name, var->string));
-       }
+       if ((var->flags & CVAR_USERINFO) && cls.state != ca_dedicated)
+               CL_SetInfo(var->name, var->string, true, false, false, false);
 }
 
 void Cvar_SetQuick (cvar_t *var, const char *value)
@@ -262,7 +258,7 @@ void Cvar_SetQuick (cvar_t *var, const char *value)
                return;
        }
 
-       if (developer.integer)
+       if (developer.integer >= 100)
                Con_Printf("Cvar_SetQuick({\"%s\", \"%s\", %i, \"%s\"}, \"%s\");\n", var->name, var->string, var->flags, var->defstring, value);
 
        Cvar_SetQuick_Internal(var, value);
@@ -320,7 +316,7 @@ void Cvar_RegisterVariable (cvar_t *variable)
        cvar_t *current, *next, *cvar;
        char *oldstr;
 
-       if (developer.integer)
+       if (developer.integer >= 100)
                Con_Printf("Cvar_RegisterVariable({\"%s\", \"%s\", %i});\n", variable->name, variable->string, variable->flags);
 
 // first check to see if it has already been defined
@@ -329,7 +325,7 @@ void Cvar_RegisterVariable (cvar_t *variable)
        {
                if (cvar->flags & CVAR_ALLOCATED)
                {
-                       if (developer.integer)
+                       if (developer.integer >= 100)
                                Con_Printf("...  replacing existing allocated cvar {\"%s\", \"%s\", %i}\n", cvar->name, cvar->string, cvar->flags);
                        // fixed variables replace allocated ones
                        // (because the engine directly accesses fixed variables)
@@ -411,7 +407,7 @@ cvar_t *Cvar_Get (const char *name, const char *value, int flags)
        int hashindex;
        cvar_t *current, *next, *cvar;
 
-       if (developer.integer)
+       if (developer.integer >= 100)
                Con_Printf("Cvar_Get(\"%s\", \"%s\", %i);\n", name, value, flags);
 
 // first check to see if it has already been defined
@@ -420,15 +416,6 @@ cvar_t *Cvar_Get (const char *name, const char *value, int flags)
        {
                cvar->flags |= flags;
                Cvar_SetQuick_Internal (cvar, value);
-               // also set the default value (but only once)
-               if (~cvar->flags & CVAR_DEFAULTSET)
-               {
-                       cvar->flags |= CVAR_DEFAULTSET;
-
-                       Z_Free(cvar->defstring);
-                       cvar->defstring = (char *)Z_Malloc(strlen(value) + 1);
-                       strcpy(cvar->defstring, value);
-               }
                return cvar;
        }
 
@@ -442,7 +429,7 @@ cvar_t *Cvar_Get (const char *name, const char *value, int flags)
 // allocate a new cvar, cvar name, and cvar string
 // FIXME: these never get Z_Free'd
        cvar = (cvar_t *)Z_Malloc(sizeof(cvar_t));
-       cvar->flags = flags | CVAR_ALLOCATED | CVAR_DEFAULTSET;
+       cvar->flags = flags | CVAR_ALLOCATED;
        cvar->name = (char *)Z_Malloc(strlen(name)+1);
        strcpy(cvar->name, name);
        cvar->string = (char *)Z_Malloc(strlen(value)+1);
@@ -495,7 +482,8 @@ qboolean    Cvar_Command (void)
                return true;
        }
 
-       Con_DPrint("Cvar_Command: ");
+       if (developer.integer >= 100)
+               Con_DPrint("Cvar_Command: ");
 
        if (v->flags & CVAR_READONLY)
        {
@@ -503,10 +491,59 @@ qboolean  Cvar_Command (void)
                return true;
        }
        Cvar_Set (v->name, Cmd_Argv(1));
+       if (developer.integer >= 100)
+               Con_DPrint("\n");
        return true;
 }
 
 
+void Cvar_LockDefaults_f (void)
+{
+       cvar_t *var;
+       // lock in the default values of all cvars
+       for (var = cvar_vars ; var ; var = var->next)
+       {
+               if (!(var->flags & CVAR_DEFAULTSET))
+               {
+                       //Con_Printf("locking cvar %s (%s -> %s)\n", var->name, var->string, var->defstring);
+                       var->flags |= CVAR_DEFAULTSET;
+                       Z_Free(var->defstring);
+                       var->defstring = (char *)Z_Malloc(strlen(var->string) + 1);
+                       strcpy(var->defstring, var->string);
+               }
+       }
+}
+
+
+void Cvar_ResetToDefaults_All_f (void)
+{
+       cvar_t *var;
+       // restore the default values of all cvars
+       for (var = cvar_vars ; var ; var = var->next)
+               Cvar_SetQuick(var, var->defstring);
+}
+
+
+void Cvar_ResetToDefaults_NoSaveOnly_f (void)
+{
+       cvar_t *var;
+       // restore the default values of all cvars
+       for (var = cvar_vars ; var ; var = var->next)
+               if (!(var->flags & CVAR_SAVE))
+                       Cvar_SetQuick(var, var->defstring);
+}
+
+
+void Cvar_ResetToDefaults_SaveOnly_f (void)
+{
+       cvar_t *var;
+       // restore the default values of all cvars
+       for (var = cvar_vars ; var ; var = var->next)
+               if (var->flags & CVAR_SAVE)
+                       Cvar_SetQuick(var, var->defstring);
+}
+
+
 /*
 ============
 Cvar_WriteVariables
@@ -519,8 +556,9 @@ void Cvar_WriteVariables (qfile_t *f)
 {
        cvar_t  *var;
 
+       // don't save cvars that match their default value
        for (var = cvar_vars ; var ; var = var->next)
-               if (var->flags & CVAR_SAVE)
+               if (var->flags & CVAR_SAVE && strcmp(var->string, var->defstring))
                        FS_Printf(f, "%s%s \"%s\"\n", var->flags & CVAR_ALLOCATED ? "seta " : "", var->name, var->string);
 }