#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 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;