Created new subdir: uquake. Pick your favorite U word for the meaning --
Unchained, Ultimate, Ultra, Up Yours, Underworld, Underground, Unified,
Unity, etc. You know the drill.
This takes care of the "standalone" problem with the wrong name, and the
recent snafu with multiple developers working on the same files
simultaneously...expect me (and probably others) to start locking dirs when
updates are taking place.
And yes, this update is really as large as it looks. Software only at the
moment, but I will have the makefile updated to build the GL builds as
well.
1999-12-26 13:51:52 +00:00
|
|
|
/*
|
2000-02-04 13:40:04 +00:00
|
|
|
cvar.h
|
Created new subdir: uquake. Pick your favorite U word for the meaning --
Unchained, Ultimate, Ultra, Up Yours, Underworld, Underground, Unified,
Unity, etc. You know the drill.
This takes care of the "standalone" problem with the wrong name, and the
recent snafu with multiple developers working on the same files
simultaneously...expect me (and probably others) to start locking dirs when
updates are taking place.
And yes, this update is really as large as it looks. Software only at the
moment, but I will have the makefile updated to build the GL builds as
well.
1999-12-26 13:51:52 +00:00
|
|
|
Copyright (C) 1996-1997 Id Software, Inc.
|
2000-01-27 17:06:02 +00:00
|
|
|
Copyright (C) 1999,2000 contributors of the QuakeForge project
|
|
|
|
Please see the file "AUTHORS" for a list of contributors
|
Created new subdir: uquake. Pick your favorite U word for the meaning --
Unchained, Ultimate, Ultra, Up Yours, Underworld, Underground, Unified,
Unity, etc. You know the drill.
This takes care of the "standalone" problem with the wrong name, and the
recent snafu with multiple developers working on the same files
simultaneously...expect me (and probably others) to start locking dirs when
updates are taking place.
And yes, this update is really as large as it looks. Software only at the
moment, but I will have the makefile updated to build the GL builds as
well.
1999-12-26 13:51:52 +00:00
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU General Public License
|
|
|
|
as published by the Free Software Foundation; either version 2
|
|
|
|
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.
|
|
|
|
|
|
|
|
See the GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with this program; if not, write to the Free Software
|
|
|
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
2000-01-27 17:06:02 +00:00
|
|
|
#ifndef _CVAR_H
|
|
|
|
#define _CVAR_H
|
|
|
|
|
2000-02-04 13:40:04 +00:00
|
|
|
#include <qtypes.h>
|
2000-02-08 05:06:58 +00:00
|
|
|
#include <quakeio.h>
|
Created new subdir: uquake. Pick your favorite U word for the meaning --
Unchained, Ultimate, Ultra, Up Yours, Underworld, Underground, Unified,
Unity, etc. You know the drill.
This takes care of the "standalone" problem with the wrong name, and the
recent snafu with multiple developers working on the same files
simultaneously...expect me (and probably others) to start locking dirs when
updates are taking place.
And yes, this update is really as large as it looks. Software only at the
moment, but I will have the makefile updated to build the GL builds as
well.
1999-12-26 13:51:52 +00:00
|
|
|
/*
|
|
|
|
|
|
|
|
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
|
|
|
|
in C code.
|
|
|
|
|
|
|
|
it is sufficient to initialize a cvar_t with just the first two fields, or
|
|
|
|
you can add a ,true flag for variables that you want saved to the configuration
|
|
|
|
file when the game is quit:
|
|
|
|
|
|
|
|
cvar_t r_draworder = {"r_draworder","1"};
|
|
|
|
cvar_t scr_screensize = {"screensize","1",true};
|
|
|
|
|
|
|
|
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:
|
|
|
|
Cvar_RegisterVariable (&host_framerate);
|
|
|
|
|
|
|
|
|
|
|
|
C code usually just references a cvar in place:
|
|
|
|
if ( r_draworder.value )
|
|
|
|
|
|
|
|
It could optionally ask for the value to be looked up for a string name:
|
|
|
|
if (Cvar_VariableValue ("r_draworder"))
|
|
|
|
|
|
|
|
Interpreted prog code can access cvars with the cvar(name) or
|
|
|
|
cvar_set (name, value) internal functions:
|
|
|
|
teamplay = cvar("teamplay");
|
|
|
|
|
|
|
|
The user can access cvars from the console in two ways:
|
|
|
|
r_draworder prints the current value
|
|
|
|
r_draworder 0 sets the current value to 0
|
|
|
|
Cvars are restricted from having the same names as commands to keep this
|
|
|
|
interface from being ambiguous.
|
|
|
|
*/
|
|
|
|
|
2000-02-04 13:40:04 +00:00
|
|
|
typedef struct cvar_s
|
|
|
|
{
|
|
|
|
char *name;
|
|
|
|
char *string;
|
2000-02-16 21:30:20 +00:00
|
|
|
unsigned int type;
|
|
|
|
qboolean first; // determine if this is the first write
|
|
|
|
// qboolean archive; // set to true to cause it to be saved to vars.rc
|
|
|
|
// qboolean info; // added to serverinfo or userinfo when changed
|
|
|
|
// qboolean server; // notifies players when changed (UQUAKE)
|
|
|
|
// qboolean heap; // allocated off the heap, safe to free
|
2000-02-04 13:40:04 +00:00
|
|
|
float value;
|
|
|
|
struct cvar_s *next;
|
|
|
|
} cvar_t;
|
|
|
|
|
2000-02-16 21:30:20 +00:00
|
|
|
#define CVAR_NONE 0
|
2000-02-15 23:17:23 +00:00
|
|
|
#define CVAR_ARCHIVE 1 // set to cause it to be saved to vars.rc
|
|
|
|
// used for system variables, not for player
|
|
|
|
// specific configurations
|
|
|
|
#define CVAR_USERINFO 2 // sent to server on connect or change
|
|
|
|
#define CVAR_SERVERINFO 4 // sent in response to front end requests
|
|
|
|
#define CVAR_SYSTEMINFO 8 // these cvars will be duplicated on all clients
|
|
|
|
#define CVAR_INIT 16 // don't allow change from console at all,
|
|
|
|
// but can be set from the command line
|
2000-02-16 21:30:20 +00:00
|
|
|
#define CVAR_NOTIFY 32 // Will notify players when changed.
|
|
|
|
|
2000-02-15 23:17:23 +00:00
|
|
|
#define CVAR_ROM 64 // display only, cannot be set by user at all
|
|
|
|
#define CVAR_USER_CREATED 128 // created by a set command
|
2000-02-16 21:30:20 +00:00
|
|
|
#define CVAR_HEAP 256 // allocated off the heap, safe to free
|
2000-02-15 23:17:23 +00:00
|
|
|
#define CVAR_CHEAT 512 // can not be changed if cheats are disabled
|
|
|
|
#define CVAR_NORESTART 1024 // do not clear when a cvar_restart is issued
|
|
|
|
|
2000-02-16 04:36:33 +00:00
|
|
|
// Zoid| A good CVAR_ROM example is basepath. The code should read "cvar_t
|
|
|
|
// *fs_basepath = CvarGet("fs_basepath", ".", CVAR_ROM); The user can
|
|
|
|
// override that with +set fs_basepath <blah> since the command line +set gets
|
|
|
|
// created _before_ the C code for fs_basepath setup is called. The code goes
|
|
|
|
// "look, the user made fs_basepath already", uses the users value, but sets
|
|
|
|
// CVAR_ROM as per the call.
|
2000-02-04 13:40:04 +00:00
|
|
|
|
Created new subdir: uquake. Pick your favorite U word for the meaning --
Unchained, Ultimate, Ultra, Up Yours, Underworld, Underground, Unified,
Unity, etc. You know the drill.
This takes care of the "standalone" problem with the wrong name, and the
recent snafu with multiple developers working on the same files
simultaneously...expect me (and probably others) to start locking dirs when
updates are taking place.
And yes, this update is really as large as it looks. Software only at the
moment, but I will have the makefile updated to build the GL builds as
well.
1999-12-26 13:51:52 +00:00
|
|
|
void Cvar_RegisterVariable (cvar_t *variable);
|
|
|
|
// registers a cvar that allready has the name, string, and optionally the
|
|
|
|
// archive elements set.
|
|
|
|
|
|
|
|
void Cvar_Set (char *var_name, char *value);
|
|
|
|
// equivelant to "<name> <variable>" typed at the console
|
|
|
|
|
|
|
|
void Cvar_SetValue (char *var_name, float value);
|
|
|
|
// expands value to a string and calls Cvar_Set
|
|
|
|
|
|
|
|
float Cvar_VariableValue (char *var_name);
|
|
|
|
// returns 0 if not defined or non numeric
|
|
|
|
|
|
|
|
char *Cvar_VariableString (char *var_name);
|
|
|
|
// returns an empty string if not defined
|
|
|
|
|
|
|
|
char *Cvar_CompleteVariable (char *partial);
|
|
|
|
// attempts to match a partial variable name for command line completion
|
|
|
|
// returns NULL if nothing fits
|
|
|
|
|
|
|
|
qboolean Cvar_Command (void);
|
|
|
|
// called by Cmd_ExecuteString when Cmd_Argv(0) doesn't match a known
|
|
|
|
// command. Returns true if the command was a variable reference that
|
|
|
|
// was handled. (print or change)
|
|
|
|
|
2000-02-08 05:06:58 +00:00
|
|
|
void Cvar_WriteVariables (QFile *f);
|
Created new subdir: uquake. Pick your favorite U word for the meaning --
Unchained, Ultimate, Ultra, Up Yours, Underworld, Underground, Unified,
Unity, etc. You know the drill.
This takes care of the "standalone" problem with the wrong name, and the
recent snafu with multiple developers working on the same files
simultaneously...expect me (and probably others) to start locking dirs when
updates are taking place.
And yes, this update is really as large as it looks. Software only at the
moment, but I will have the makefile updated to build the GL builds as
well.
1999-12-26 13:51:52 +00:00
|
|
|
// Writes lines containing "set variable value" for all variables
|
|
|
|
// with the archive flag set to true.
|
|
|
|
|
|
|
|
cvar_t *Cvar_FindVar (char *var_name);
|
|
|
|
|
2000-02-15 11:42:12 +00:00
|
|
|
void Cvar_Init();
|
|
|
|
|
Created new subdir: uquake. Pick your favorite U word for the meaning --
Unchained, Ultimate, Ultra, Up Yours, Underworld, Underground, Unified,
Unity, etc. You know the drill.
This takes care of the "standalone" problem with the wrong name, and the
recent snafu with multiple developers working on the same files
simultaneously...expect me (and probably others) to start locking dirs when
updates are taking place.
And yes, this update is really as large as it looks. Software only at the
moment, but I will have the makefile updated to build the GL builds as
well.
1999-12-26 13:51:52 +00:00
|
|
|
extern cvar_t *cvar_vars;
|
2000-01-27 17:06:02 +00:00
|
|
|
#endif // _CVAR_H
|