#define CVAR_USERINFO 16
// CVAR_PRIVATE means do not $ expand or sendcvar this cvar under any circumstances (rcon_password uses this)
#define CVAR_PRIVATE 32
-// this means that this cvar should update a userinfo key but the name does not correspond directly to the userinfo key to update, and may require additional conversion ("_cl_color" for example should update "topcolor" and "bottomcolor")
-#define CVAR_NQUSERINFOHACK 64
// for engine-owned cvars that must not be reset on gametype switch (e.g. scr_screenshot_name, which otherwise isn't set to the mod name properly)
-#define CVAR_NORESETTODEFAULTS 128
+#define CVAR_NORESETTODEFAULTS 64
// cvar is accessible in client
-#define CVAR_CLIENT 256
+#define CVAR_CLIENT 128
// cvar is accessible in dedicated server
-#define CVAR_SERVER 512
+#define CVAR_SERVER 256
// used to determine if flags is valid
-#define CVAR_MAXFLAGSVAL 1023
+#define CVAR_MAXFLAGSVAL 511
// for internal use only!
#define CVAR_DEFAULTSET (1<<30)
#define CVAR_ALLOCATED (1<<31)
const char *defstring;
+ void (*callback)(struct cvar_s *var);
+ qboolean ignore_callback;
+
+ char **aliases;
+ int aliasindex;
+
// values at init (for Cvar_RestoreInitState)
qboolean initstate; // indicates this existed at init
int initflags;
//menucvar_t menuinfo;
struct cvar_s *next;
- struct cvar_s *nextonhashchain;
} cvar_t;
+typedef struct cvar_hash_s
+{
+ cvar_t *cvar;
+ struct cvar_hash_s *next;
+} cvar_hash_t;
+
typedef struct cvar_state_s
{
cvar_t *vars;
- cvar_t *hashtable[CVAR_HASHSIZE];
+ cvar_hash_t *hashtable[CVAR_HASHSIZE];
}
cvar_state_t;
void Cvar_MenuOption(cvar_t *variable, int menu, int value[16], const char *name[16]);
*/
+
+void Cvar_RegisterAlias(cvar_t *variable, const char *alias );
+
+void Cvar_RegisterCallback(cvar_t *variable, void (*callback)(cvar_t *));
+
/// registers a cvar that already has the name, string, and optionally the
/// archive elements set.
void Cvar_RegisterVariable(cvar_t *variable);
+qboolean Cvar_Readonly (cvar_t *var, const char *cmd_name);
+
/// equivelant to "<name> <variable>" typed at the console
void Cvar_Set (cvar_state_t *cvars, const char *var_name, const char *value);
+void Cvar_Set_NoCallback (cvar_t *var, const char *value);
/// expands value to a string and calls Cvar_Set
void Cvar_SetValue (cvar_state_t *cvars, const char *var_name, float value);
// attempts to match a partial variable name for command line completion
// returns NULL if nothing fits
+void Cvar_PrintHelp(cvar_t *cvar, const char *name, qboolean full);
+
void Cvar_CompleteCvarPrint (cvar_state_t *cvars, const char *partial, int neededflags);
qboolean Cvar_Command (cmd_state_t *cmd);