#ifndef CVAR_H
#define CVAR_H
+#include "nil.qh"
#include "static.qh"
-void RegisterCvars(void(string name, string desc, bool archive, string file) f) { }
+void RegisterCvars(void(string name, string def, string desc, bool archive, string file) f) { }
-void RegisterCvars_Set(string name, string desc, bool archive, string file)
+void RegisterCvars_Set(string name, string def, string desc, bool archive, string file)
{
- localcmd(sprintf("\n%1$s %2$s \"$%2$s\" \"%3$s\"\n", (archive ? "seta" : "set"), name, desc));
+ string val = string_null;
+ if (cvar_type(name) & CVAR_TYPEFLAG_EXISTS) {
+ val = cvar_string(name);
+ // Need to unset first to change the default
+ localcmd(sprintf("\nunset %s\n", name));
+ }
+ localcmd(sprintf("\n%s %s \"%s\" \"%s\"\n", (archive ? "seta" : "set"), name, def, desc));
+ if (val) {
+ localcmd(sprintf("\n%s \"%s\"\n", name, val));
+ }
}
+#ifndef SVQC
STATIC_INIT_LATE(Cvars) { RegisterCvars(RegisterCvars_Set); }
+#endif
+
+const noref bool default_bool = false;
+const noref int default_int = 0;
+const noref float default_float = 0;
+const noref string default_string = "";
+const noref vector default_vector = '0 0 0';
+
+#define repr_cvar_bool(x) ((x) ? "1" : "0")
+#define repr_cvar_int(x) (ftos(x))
+#define repr_cvar_float(x) (ftos(x))
+#define repr_cvar_string(x) (x)
+#define repr_cvar_vector(x) (sprintf("%v", x))
+#define __AUTOCVAR(file, archive, var, type, desc, default) \
+ [[accumulate]] void RegisterCvars(void(string, string, string, bool, string) f) { f(#var, repr_cvar_##type(default), desc, archive, file); } \
+ type autocvar_##var = default
#define AUTOCVAR_5(file, archive, var, type, desc) \
- [[accumulate]] void RegisterCvars(void(string, string, bool, string) f) { f(#var, desc, archive, file); } \
- type autocvar_##var
+ __AUTOCVAR(file, archive, var, type, desc, default_##type)
#define AUTOCVAR_6(file, archive, var, type, default, desc) \
- AUTOCVAR_5(file, archive, var, type, desc) = default
+ __AUTOCVAR(file, archive, var, type, desc, default)
#define _AUTOCVAR(...) EVAL(OVERLOAD(AUTOCVAR, __FILE__, __VA_ARGS__))
#define AUTOCVAR_SAVE(...) _AUTOCVAR(true, __VA_ARGS__)
#define AUTOCVAR(...) _AUTOCVAR(false, __VA_ARGS__)
return weaponarenastring;
}
+AUTOCVAR(g_grappling_hook, bool, _("let players spawn with the grappling hook which allows them to pull themselves up"));
+
string XonoticMutatorsDialog_toString(entity me)
{
string s;
s = strcat(s, ", ", _("Low gravity"));
if(cvar("g_cloaked"))
s = strcat(s, ", ", _("Cloaked"));
- if(cvar("g_grappling_hook"))
+ if(autocvar_g_grappling_hook)
s = strcat(s, ", ", _("Hook"));
if(cvar("g_midair"))
s = strcat(s, ", ", _("Midair"));