|
|
1.1 ! root 1: // cvar.h ! 2: ! 3: /* ! 4: ! 5: cvar_t variables are used to hold scalar or string variables that can be changed or displayed at the console or prog code as well as accessed directly ! 6: in C code. ! 7: ! 8: it is sufficient to initialize a cvar_t with just the first two fields, or ! 9: you can add a ,true flag for variables that you want saved to the configuration ! 10: file when the game is quit: ! 11: ! 12: cvar_t r_draworder = {"r_draworder","1"}; ! 13: cvar_t scr_screensize = {"screensize","1",true}; ! 14: ! 15: Cvars must be registered before use, or they will have a 0 value instead of the float interpretation of the string. Generally, all cvar_t declarations should be registered in the apropriate init function before any console commands are executed: ! 16: Cvar_RegisterVariable (&host_framerate); ! 17: ! 18: ! 19: C code usually just references a cvar in place: ! 20: if ( r_draworder.value ) ! 21: ! 22: It could optionally ask for the value to be looked up for a string name: ! 23: if (Cvar_VariableValue ("r_draworder")) ! 24: ! 25: Interpreted prog code can access cvars with the cvar(name) or ! 26: cvar_set (name, value) internal functions: ! 27: teamplay = cvar("teamplay"); ! 28: cvar_set ("registered", "1"); ! 29: ! 30: The user can access cvars from the console in two ways: ! 31: r_draworder prints the current value ! 32: r_draworder 0 sets the current value to 0 ! 33: Cvars are restricted from having the same names as commands to keep this ! 34: interface from being ambiguous. ! 35: */ ! 36: ! 37: typedef struct cvar_s ! 38: { ! 39: char *name; ! 40: char *string; ! 41: qboolean archive; // set to true to cause it to be saved to vars.rc ! 42: qboolean server; // notifies players when changed ! 43: float value; ! 44: struct cvar_s *next; ! 45: } cvar_t; ! 46: ! 47: void Cvar_RegisterVariable (cvar_t *variable); ! 48: // registers a cvar that allready has the name, string, and optionally the ! 49: // archive elements set. ! 50: ! 51: void Cvar_Set (char *var_name, char *value); ! 52: // equivelant to "<name> <variable>" typed at the console ! 53: ! 54: void Cvar_SetValue (char *var_name, float value); ! 55: // expands value to a string and calls Cvar_Set ! 56: ! 57: float Cvar_VariableValue (char *var_name); ! 58: // returns 0 if not defined or non numeric ! 59: ! 60: char *Cvar_VariableString (char *var_name); ! 61: // returns an empty string if not defined ! 62: ! 63: char *Cvar_CompleteVariable (char *partial); ! 64: // attempts to match a partial variable name for command line completion ! 65: // returns NULL if nothing fits ! 66: ! 67: qboolean Cvar_Command (void); ! 68: // called by Cmd_ExecuteString when Cmd_Argv(0) doesn't match a known ! 69: // command. Returns true if the command was a variable reference that ! 70: // was handled. (print or change) ! 71: ! 72: void Cvar_WriteVariables (FILE *f); ! 73: // Writes lines containing "set variable value" for all variables ! 74: // with the archive flag set to true. ! 75: ! 76: cvar_t *Cvar_FindVar (char *var_name); ! 77: ! 78: extern cvar_t *cvar_vars;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.