diff --git a/engine/common/cvar.c b/engine/common/cvar.c index 17406d7a..e5744c9e 100644 --- a/engine/common/cvar.c +++ b/engine/common/cvar.c @@ -695,7 +695,11 @@ cvar_t *Cvar_SetCore (cvar_t *var, const char *value, qboolean force) if (latch) { if (strcmp(latch, value)) + { var->modified++; //only modified if it changed. + if (var->callback) + var->callback(var, latch); + } Z_Free (latch); // free the old value string } diff --git a/engine/common/cvar.h b/engine/common/cvar.h index 2f01fe95..b5524a6e 100644 --- a/engine/common/cvar.h +++ b/engine/common/cvar.h @@ -67,12 +67,16 @@ typedef struct cvar_s //free style :) char *name2; + void (*callback) (struct cvar_s *var, char *oldvalue); + char *defaultstr; //default qbyte restriction; } cvar_t; -#define FCVAR(ConsoleName,ConsoleName2,Value,Flags) {ConsoleName, Value, NULL, Flags, 0, 0, 0, ConsoleName2} +#define FCVARC(ConsoleName,ConsoleName2,Value,Flags,Callback) {ConsoleName, Value, NULL, Flags, 0, 0, 0, ConsoleName2, Callback} +#define FCVAR(ConsoleName,ConsoleName2,Value,Flags) FCVARC(ConsoleName, ConsoleName2, Value, Flags, NULL) #define SCVARF(ConsoleName,Value, Flags) FCVAR(ConsoleName, NULL, Value, Flags) +#define SCVARC(ConsoleName,Value,Callback) FCVARC(ConsoleName, NULL, Value, 0, Callback) #define SCVAR(ConsoleName,Value) FCVAR(ConsoleName, NULL, Value, 0) typedef struct cvar_group_s