summaryrefslogtreecommitdiff
path: root/src/game/vars.cpp
diff options
context:
space:
mode:
authornavewindre <boneyaard@gmail.com>2025-09-03 20:10:09 +0200
committernavewindre <boneyaard@gmail.com>2025-09-03 20:10:09 +0200
commitf8b92ce3aa08b1445c9f956d8166830946562d12 (patch)
tree94e63a5aec9f8f52b577f56799e0c9201fd976a5 /src/game/vars.cpp
a
Diffstat (limited to 'src/game/vars.cpp')
-rw-r--r--src/game/vars.cpp115
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 );
+}