]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/lib/Cvar.qh
914bed97a9c7bf119858bd53db14bbc3c031dee8
[xonotic/xonotic-data.pk3dir.git] / qcsrc / lib / Cvar.qh
1 #ifndef CVAR_H
2 #define CVAR_H
3
4 #include "Static.qh"
5
6 void RegisterCvars(void(string name, string desc, bool archive) f) { }
7
8 void RegisterCvars_Set(string name, string desc, bool archive)
9 {
10     localcmd(sprintf("\n%1$s %2$s \"$%2$s\" \"%3$s\"\n", (archive ? "seta" : "set"), name, desc));
11 }
12
13 STATIC_INIT_LATE(Cvars) { RegisterCvars(RegisterCvars_Set); }
14
15 #define AUTOCVAR_4(archive, var, type, desc) \
16     [[accumulate]] void RegisterCvars(void(string, string, bool) f) { f(#var, desc, archive); } \
17     type autocvar_##var
18 #define AUTOCVAR_5(archive, var, type, default, desc) \
19     AUTOCVAR_4(archive, var, type, desc) = default
20 #define _AUTOCVAR(...) OVERLOAD(AUTOCVAR, __VA_ARGS__)
21 #define AUTOCVAR_SAVE(...) _AUTOCVAR(true, __VA_ARGS__)
22 #define AUTOCVAR(...) _AUTOCVAR(false, __VA_ARGS__)
23
24 #endif