/* dvar->flags */
#define DVAR_ARCHIVE 1
#define DVAR_LATCH 2
#define DVAR_CHEAT 4
#define DVAR_USER_CREATED 0x100
#define DVAR_SAVED 0x200
#define DVAR_SERVERINFO 0x400
#define DVAR_INIT 0x800
#define DVAR_CHANGEABLE_RESET 0x1000
#define DVAR_ROM 0x2000
#define DVAR_EXTERNAL 0x4000
#define DVAR_AUTOEXEC 0x8000
/* dvar->type */
#define DVAR_TYPE_BOOL 0
#define DVAR_TYPE_FLOAT 1
#define DVAR_TYPE_FLOAT_2 2
#define DVAR_TYPE_FLOAT_3 3
#define DVAR_TYPE_FLOAT_4 4
#define DVAR_TYPE_INT 5
#define DVAR_TYPE_ENUM 6
#define DVAR_TYPE_STRING 7
#define DVAR_TYPE_COLOR 8
#define DVAR_TYPE_DEV_TWEAK 9
#define DVAR_TYPE_COUNT 10
union DvarLimits
{
struct {
int stringCount;
const char **strings;
} enumeration;
struct {
int min;
int max;
} integer;
struct {
float min;
float max;
} value, vector;
};
union DvarValue
{
bool enabled;
int integer;
unsigned int unsignedInt;
float value;
float vector[4];
const char *string;
char color[4];
};
struct dvar_s
{
const char *name;
//The description was removed for the latest updates (TU7 and TU8 on Xbox 360)
// const char *description;
unsigned __int16 flags;
char type;
bool modified;
DvarValue current;
DvarValue latched;
DvarValue reset;
DvarLimits domain;
dvar_s * next;
};