diff options
Diffstat (limited to 'src/game/vars.h')
| -rw-r--r-- | src/game/vars.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/game/vars.h b/src/game/vars.h new file mode 100644 index 0000000..395c470 --- /dev/null +++ b/src/game/vars.h @@ -0,0 +1,50 @@ +#pragma once +#include "../util.h" + +enum CvarTypes_t { + CVAR_TYPE_INT, + CVAR_TYPE_FLOAT, + CVAR_TYPE_COLOR, + CVAR_TYPE_STRING, + CVAR_TYPE_FN, + CVAR_TYPE_LAST +}; + +typedef I32(*CVAR_FUNC)( struct CVAR* self, const char* cmdline ); + +struct CVAR { + char name[100]; + U8 type; + union { + F32 fl_v; + I32 i_v; + CLR clr_v; + CVAR_FUNC fn_v; + char str_v[64]; + }; + + union { + F32 fl_v; + I32 i_v; + CLR clr_v; + CVAR_FUNC fn_v; + char str_v[64]; + } default_v; +}; + +struct VAR_LIST { + LIST<CVAR*> vars; +}; + +extern VAR_LIST* vars_init(); + +extern CVAR* var_new( const char* name, F32 v ); +extern CVAR* var_new( const char* name, I32 v ); +extern CVAR* var_new( const char* name, CLR v ); +extern CVAR* var_new( const char* name, const char* v ); +extern CVAR* var_new( const char* name, CVAR_FUNC fn ); + +extern CVAR* var_find( const char* name ); +extern I32 var_call( CVAR* cmdvar, const char* cmdline ); + +extern VAR_LIST* varl; |
