]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
THE POWER OF MACROS COMPELS YOU, THE POWER OF MACROS COMPELS YOU, ...
authorSamual Lenks <samual@xonotic.org>
Sun, 30 Jun 2013 23:03:35 +0000 (19:03 -0400)
committerSamual Lenks <samual@xonotic.org>
Sun, 30 Jun 2013 23:03:35 +0000 (19:03 -0400)
qcsrc/common/weapons/weapons.qh

index 4019834ee2143df8bb1f81b097c56c2e9d0e2a55..9efdf0eab40cc9e681ec3675e3322c2c56b8442d 100644 (file)
@@ -268,19 +268,34 @@ float WEP_LAST;
 #define MO_SEC 2
 #define MO_BOTH 3
 
+#define WEP_DUPECHECK(dupecheck,cvar) \
+       #ifndef dupecheck \
+               #define dupecheck \
+               float cvar; \
+       #else \
+               #error DUPLICATE WEAPON CVAR: cvar \
+       #endif
+
+/*
+#define WEP_CLEAN_DUPECHECK(dupecheck) \
+       #ifdef WEP_CVAR_##weapon##_##name \
+               #undef WEP_CVAR_##weapon##_##name \
+       #endif
+*/
+
 #define WEP_ADD_CVAR(weapon,mode,name) \
        #if mode == MO_PRI \
-               float autocvar_g_balance_##weapon##_primary_##name; \
+               WEP_DUPECHECK(WEP_CVAR_##weapon##_##name, autocvar_g_balance_##weapon##_primary_##name) \
        #endif \
        #if mode == MO_SEC \
-               float autocvar_g_balance_##weapon##_secondary_##name; \
+               WEP_DUPECHECK(WEP_CVAR_##weapon##_##name, autocvar_g_balance_##weapon##_secondary_##name) \
        #endif \
        #if mode == MO_BOTH \
-               float autocvar_g_balance_##weapon##_primary_##name; \
-               float autocvar_g_balance_##weapon##_secondary_##name; \
+               WEP_DUPECHECK(WEP_CVAR_##weapon##_##name, autocvar_g_balance_##weapon##_primary_##name) \
+               WEP_DUPECHECK(WEP_CVAR_##weapon##_##name, autocvar_g_balance_##weapon##_secondary_##name) \
        #endif \
        #if mode == MO_NONE \
-               float autocvar_g_balance_##weapon##_##name; \
+               WEP_DUPECHECK(WEP_CVAR_##weapon##_##name, autocvar_g_balance_##weapon##_##name) \
        #endif
 
 #define WEP_CVAR(weapon,name) autocvar_g_balance_##weapon##_##name
@@ -290,7 +305,7 @@ float WEP_LAST;
 
 #define WEP_ADD_PROP(weapon,prop,name) \
        .float ##prop; \
-       float autocvar_g_balance_##weapon##_##name;
+       WEP_DUPECHECK(WEP_CVAR_##weapon##_##name, autocvar_g_balance_##weapon##_##name)
 
 #define WEP_SET_PROP(wepid,weapon,prop,name) get_weaponinfo(##wepid).##prop = autocvar_g_balance_##weapon##_##name;