summaryrefslogtreecommitdiff
path: root/src/game/vars.h
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.h
a
Diffstat (limited to 'src/game/vars.h')
-rw-r--r--src/game/vars.h50
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;