diff options
| author | navewindre <boneyaard@gmail.com> | 2025-09-03 20:10:09 +0200 |
|---|---|---|
| committer | navewindre <boneyaard@gmail.com> | 2025-09-03 20:10:09 +0200 |
| commit | f8b92ce3aa08b1445c9f956d8166830946562d12 (patch) | |
| tree | 94e63a5aec9f8f52b577f56799e0c9201fd976a5 /src/game/vars.cpp | |
a
Diffstat (limited to 'src/game/vars.cpp')
| -rw-r--r-- | src/game/vars.cpp | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/src/game/vars.cpp b/src/game/vars.cpp new file mode 100644 index 0000000..d7b1f9b --- /dev/null +++ b/src/game/vars.cpp @@ -0,0 +1,115 @@ +#include "vars.h" +#include "../util.h" +#include <string.h> + +VAR_LIST* varl; + +VAR_LIST* vars_init() { + VAR_LIST* ret = new VAR_LIST; + return ret; +} + +CVAR* var_new( const char* name, F32 v ) { + if( !varl ) { + dlog( "var_new() : error: varl null\n" ); + return 0; + } + + CVAR* ret = new CVAR; + memset( ret, 0 , sizeof( CVAR ) ); + ret->type = CVAR_TYPE_FLOAT; + strcpy( ret->name, name ); + ret->fl_v = v; + + varl->vars.push( ret ); + return ret; +} + +CVAR* var_new( const char* name, I32 i ) { + if( !varl ) { + dlog( "var_new() : error: varl null\n" ); + return 0; + } + + CVAR* ret = new CVAR; + memset( ret, 0 , sizeof( CVAR ) ); + ret->type = CVAR_TYPE_INT; + strcpy( ret->name, name ); + ret->i_v = i; + + varl->vars.push( ret ); + return ret; +} + +CVAR* var_new( const char* name, CLR c ) { + if( !varl ) { + dlog( "var_new() : error: varl null\n" ); + return 0; + } + + CVAR* ret = new CVAR; + memset( ret, 0 , sizeof( CVAR ) ); + ret->type = CVAR_TYPE_COLOR; + strcpy( ret->name, name ); + ret->clr_v = c; + + varl->vars.push( ret ); + return ret; +} + +CVAR* var_new( const char* name, CVAR_FUNC func ) { + if( !varl ) { + dlog( "var_new() : error: varl null\n" ); + return 0; + } + + CVAR* ret = new CVAR; + memset( ret, 0 , sizeof( CVAR ) ); + ret->type = CVAR_TYPE_FN; + strcpy( ret->name, name ); + ret->fn_v = func; + + varl->vars.push( ret ); + return ret; +} + +CVAR* var_new( const char* name, const char* v ) { + if( !varl ) { + dlog( "var_new() : error: varl null\n" ); + return 0; + } + + CVAR* ret = new CVAR; + memset( ret, 0, sizeof( CVAR ) ); + ret->type = CVAR_TYPE_STRING; + strcpy( ret->name, name ); + + varl->vars.push( ret ); + return ret; +} + +CVAR* var_find( const char* name ) { + if( !varl ) { + dlog( "var_new() : error: varl null\n" ); + return 0; + } + + U32 len = strlen( name ); + for( U32 i = 0; i < varl->vars.size; ++i ) { + U32 len2 = strlen( varl->vars[i]->name ); + if( strncmp( varl->vars[i]->name, name, min( len, len2 ) ) == 0 ) { + return varl->vars[i]; + } + } + + return 0; +} + +I32 var_call( CVAR *cmdvar, const char *cmdline ) { + if( cmdvar->type != CVAR_TYPE_FN ) { + dlog( "var_call() : error: not a function\n" ); + return -1; + } + + return cmdvar->fn_v( cmdvar, cmdline ); +} |
