From b12ead1a7d92cdb8756a4b796aee1abf4e07dd09 Mon Sep 17 00:00:00 2001 From: Spoike Date: Tue, 11 Apr 2006 20:42:05 +0000 Subject: [PATCH] cvars can use callbacks now. Use Cvar_ForceSet inside to undo the change. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@2188 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- engine/common/cvar.c | 4 ++++ engine/common/cvar.h | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) 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