]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cvar.c
Tomaz fixed Image_CopyMux
[xonotic/darkplaces.git] / cvar.c
diff --git a/cvar.c b/cvar.c
index f0923b02cb9c9546f58488c208a2f5b8ab6526b3..98a7207eef5d54be079a76669450cdcbc1a25e38 100644 (file)
--- a/cvar.c
+++ b/cvar.c
@@ -8,7 +8,7 @@ of the License, or (at your option) any later version.
 
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 See the GNU General Public License for more details.
 
@@ -187,7 +187,7 @@ void Cvar_SetQuick (cvar_t *var, const char *value)
 
        if (var == NULL)
        {
-               Con_Printf("Cvar_SetQuick: var == NULL\n");
+               Con_Print("Cvar_SetQuick: var == NULL\n");
                return;
        }
 
@@ -206,11 +206,8 @@ void Cvar_SetQuick (cvar_t *var, const char *value)
        strcpy (var->string, value);
        var->value = atof (var->string);
        var->integer = (int) var->value;
-       if ((var->flags & CVAR_NOTIFY) && changed)
-       {
-               if (sv.active)
-                       SV_BroadcastPrintf ("\"%s\" changed to \"%s\"\n", var->name, var->string);
-       }
+       if ((var->flags & CVAR_NOTIFY) && changed && sv.active)
+               SV_BroadcastPrintf("\"%s\" changed to \"%s\"\n", var->name, var->string);
 }
 
 void Cvar_Set (const char *var_name, const char *value)
@@ -220,7 +217,12 @@ void Cvar_Set (const char *var_name, const char *value)
        if (var == NULL)
        {
                // there is an error in C code if this happens
-               Con_Printf ("Cvar_Set: variable %s not found\n", var_name);
+               Con_Printf("Cvar_Set: variable %s not found\n", var_name);
+               return;
+       }
+       if (var->flags & CVAR_READONLY)
+       {
+               Con_Printf("Cvar_Set: %s is read-only\n", var_name);
                return;
        }
 
@@ -232,22 +234,26 @@ void Cvar_Set (const char *var_name, const char *value)
 Cvar_SetValue
 ============
 */
-void Cvar_SetValueQuick (cvar_t *var, float value)
+void Cvar_SetValueQuick(cvar_t *var, float value)
 {
-       char    val[32];
+       char val[256];
 
-       // LordHavoc: changed from %f to %g to use shortest representation
-       sprintf (val, "%g",value);
-       Cvar_SetQuick (var, val);
+       if ((float)((int)value) == value)
+               sprintf(val, "%i", (int)value);
+       else
+               sprintf(val, "%f", value);
+       Cvar_SetQuick(var, val);
 }
 
-void Cvar_SetValue (const char *var_name, float value)
+void Cvar_SetValue(const char *var_name, float value)
 {
-       char    val[32];
+       char val[256];
 
-       // LordHavoc: changed from %f to %g to use shortest representation
-       sprintf (val, "%g",value);
-       Cvar_Set (var_name, val);
+       if ((float)((int)value) == value)
+               sprintf(val, "%i", (int)value);
+       else
+               sprintf(val, "%f", value);
+       Cvar_Set(var_name, val);
 }
 
 /*
@@ -264,14 +270,14 @@ void Cvar_RegisterVariable (cvar_t *variable)
 // first check to see if it has already been defined
        if (Cvar_FindVar (variable->name))
        {
-               Con_Printf ("Can't register variable %s, already defined\n", variable->name);
+               Con_Printf("Can't register variable %s, already defined\n", variable->name);
                return;
        }
 
 // check for overlap with a command
        if (Cmd_Exists (variable->name))
        {
-               Con_Printf ("Cvar_RegisterVariable: %s is a command\n", variable->name);
+               Con_Printf("Cvar_RegisterVariable: %s is a command\n", variable->name);
                return;
        }
 
@@ -306,7 +312,9 @@ qboolean    Cvar_Command (void)
 // perform a variable print or set
        if (Cmd_Argc() == 1)
        {
-               Con_Printf ("\"%s\" is \"%s\"\n", v->name, v->string);
+               // only print if host_initialized (otherwise it could print twice if this is in a script)
+               if (host_initialized)
+                       Con_Printf("\"%s\" is \"%s\"\n", v->name, v->string);
                return true;
        }
 
@@ -323,13 +331,13 @@ Writes lines containing "set variable value" for all variables
 with the archive flag set to true.
 ============
 */
-void Cvar_WriteVariables (QFile *f)
+void Cvar_WriteVariables (qfile_t *f)
 {
        cvar_t  *var;
 
        for (var = cvar_vars ; var ; var = var->next)
                if (var->flags & CVAR_SAVE)
-                       Qprintf (f, "%s \"%s\"\n", var->name, var->string);
+                       FS_Printf(f, "%s \"%s\"\n", var->name, var->string);
 }
 
 
@@ -363,14 +371,14 @@ void Cvar_List_f (void)
                if (partial && strncmp (partial,cvar->name,len))
                        continue;
 
-               Con_Printf ("%s is \"%s\"\n", cvar->name, cvar->string);
+               Con_Printf("%s is \"%s\"\n", cvar->name, cvar->string);
                count++;
        }
 
-       Con_Printf ("%i cvar(s)", count);
+       Con_Printf("%i cvar(s)", count);
        if (partial)
-               Con_Printf (" beginning with \"%s\"", partial);
-       Con_Print("\n");
+               Con_Printf(" beginning with \"%s\"", partial);
+       Con_Print("\n");
 }
 // 2000-01-09 CvarList command by Maddes