1 /* Console variables */
17 #define FLOAT_STRING_SIZE (3 + DBL_MANT_DIG - DBL_MIN_EXP + 1)
20 /* The list of cvars */
21 cvar_t *cvar_list = NULL;
23 int cvar_initialized = 0;
30 for (ptr = cvar_list; ptr != NULL; ptr = ptr->next)
42 #define cvar_round(x) ((x)>=0?(int)((x)+0.5):(int)((x)-0.5))
45 void cvar_registervariable (cvar_t *cvar)
50 if (!cvar_initialized)
55 stringval = cvar->string;
58 cvar->string = d_strdup(stringval);
59 cvar->value = strtod(cvar->string, (char **) NULL);
60 cvar->intval = cvar_round(cvar->value);
62 if (cvar_list == NULL)
67 for (ptr = cvar_list; ptr->next != NULL; ptr = ptr->next) ;
73 /* Set a CVar's value */
74 void cvar_set_cvar(cvar_t *cvar, char *value)
77 cvar->string = d_strdup(value);
78 cvar->value = strtod(cvar->string, (char **) NULL);
79 cvar->intval = cvar_round(cvar->value);
83 void cvar_set_cvar_value(cvar_t *cvar, float value)
85 char stringval[FLOAT_STRING_SIZE];
87 snprintf(stringval, FLOAT_STRING_SIZE, "%f", value);
89 cvar_set_cvar(cvar, stringval);
93 void cvar_set (char *cvar_name, char *value)
97 for (ptr = cvar_list; ptr != NULL; ptr = ptr->next)
98 if (!stricmp(cvar_name, ptr->name)) break;
100 if (ptr == NULL) return; // If we didn't find the cvar, give up
102 cvar_set_cvar(ptr, value);
106 void cvar_set_value(char *cvar_name, float value)
108 char stringval[FLOAT_STRING_SIZE];
110 snprintf(stringval, FLOAT_STRING_SIZE, "%f", value);
112 cvar_set(cvar_name, stringval);
116 /* Get a CVar's value */
117 float cvar (char *cvar_name)
121 for (ptr = cvar_list; ptr != NULL; ptr = ptr->next)
122 if (!strcmp(cvar_name, ptr->name)) break;
124 if (ptr == NULL) return 0.0; // If we didn't find the cvar, give up