]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
SVQC finished
authorRudolf Polzer <divverent@alientrap.org>
Sun, 4 Mar 2012 17:36:57 +0000 (18:36 +0100)
committerRudolf Polzer <divverent@alientrap.org>
Sun, 4 Mar 2012 17:36:57 +0000 (18:36 +0100)
qcsrc/common/items.qc
qcsrc/common/items.qh
qcsrc/common/mapinfo.qc
qcsrc/common/mapinfo.qh
qcsrc/server/defs.qh
qcsrc/server/g_world.qc

index d7293ef69d53fe15aac7e31c079125efd2322d28..1282d428af96e139049298a6bd2630cf9437d5e8 100644 (file)
@@ -8,7 +8,7 @@ void register_weapon(float id, float(float) func, float ammotype, float i, float
        weapon_info[id - 1] = e = spawn();
        e.classname = "weapon_info";
        e.weapon = id;
-       e.weapons = power2of(id - WEP_FIRST);
+       WEPSET_COPY_EW(e, id);
        e.netname = shortname;
        e.message = wname;
        e.items = ammotype;
@@ -41,7 +41,7 @@ void register_weapons_done()
        dummy_weapon_info = spawn();
        dummy_weapon_info.classname = "weapon_info";
        dummy_weapon_info.weapon = 0; // you can recognize dummies by this
-       dummy_weapon_info.weapons = 0; // you can recognize dummies by this too
+       WEPSET_CLEAR_E(dummy_weapon_info);
        dummy_weapon_info.netname = "";
        dummy_weapon_info.message = "@!#%'n Tuba";
        dummy_weapon_info.items = 0;
index 6159291192b209f740ff14d340269b40d7c8d66f..7f2f4a314002b80b243954c1e63b2286e1da9c86 100644 (file)
@@ -71,7 +71,6 @@ string W_NumberWeaponOrder(string order);
 
 // entity properties of weaponinfo:
 .float weapon; // WEP_...
-.float weapons; // WEPBIT_...
 .string netname; // short name
 .string message; // human readable name
 .float items; // IT_...
@@ -83,6 +82,7 @@ string W_NumberWeaponOrder(string order);
 .float bot_pickupbasevalue; // bot weapon priority
 .string model2; // wpn- sprite name
 ..float ammo_field; // main ammo field
+// also, weaponinfo ents can act as a WEPSET
 
 // dynamic weapon adding
 float w_null(float dummy);
@@ -90,45 +90,45 @@ void register_weapon(float id, float(float) func, float ammotype, float i, float
 void register_weapons_done();
 
 #if 1
-.float weapons;
+.float _WS_weapons;
 # define WEPSET_DECLARE_A(a) float _WS_##a
 
-# define WEPSET_CLEAR_E(e) ((e).weapons = 0)
+# define WEPSET_CLEAR_E(e) ((e)._WS_weapons = 0)
 # define WEPSET_CLEAR_A(a) ((_WS_##a) = 0)
 
-# define WEPSET_EMPTY_E(e) ((e).weapons == 0)
+# define WEPSET_EMPTY_E(e) ((e)._WS_weapons == 0)
 # define WEPSET_EMPTY_A(a) ((_WS_##a) == 0)
 
-# define WEPSET_COPY_EE(e,o) ((e).weapons = (o).weapons)
-# define WEPSET_EQ_EE(e,o) ((e).weapons == (o).weapons)
-# define WEPSET_OR_EE(e,o) ((e).weapons |= (o).weapons)
-# define WEPSET_AND_EE(e,o) ((e).weapons &= (o).weapons)
-# define WEPSET_ANDNOT_EE(e,o) ((e).weapons &~= (o).weapons)
-# define WEPSET_CONTAINS_ANY_EE(e,o) !!((e).weapons & (o).weapons)
-# define WEPSET_CONTAINS_ALL_EE(e,o) !!(((e).weapons & (o).weapons) == (e).weapons)
-
-# define WEPSET_COPY_EA(e,a) ((e).weapons = (_WS_##a))
-# define WEPSET_EQ_EA(e,a) ((e).weapons == (_WS_##a))
-# define WEPSET_OR_EA(e,a) ((e).weapons |= (_WS_##a))
-# define WEPSET_AND_EA(e,a) ((e).weapons &= (_WS_##a))
-# define WEPSET_ANDNOT_EA(e,a) ((e).weapons &~= (_WS_##a))
-# define WEPSET_CONTAINS_ANY_EA(e,a) !!((e).weapons & (_WS_##a))
-# define WEPSET_CONTAINS_ALL_EA(e,a) !!(((e).weapons & (_WS_##a)) == (_WS_##a))
-
-# define WEPSET_COPY_EW(e,w) ((e).weapons = power2of((w) - WEP_FIRST))
-# define WEPSET_EQ_EW(e,w) ((e).weapons == power2of((w) - WEP_FIRST))
-# define WEPSET_OR_EW(e,w) ((e).weapons |= power2of((w) - WEP_FIRST))
-# define WEPSET_AND_EW(e,w) ((e).weapons &= power2of((w) - WEP_FIRST))
-# define WEPSET_ANDNOT_EW(e,w) ((e).weapons &~= power2of((w) - WEP_FIRST))
-# define WEPSET_CONTAINS_EW(e,w) !!((e).weapons & power2of((w) - WEP_FIRST))
-
-# define WEPSET_COPY_AE(a,e) ((_WS_##a) = (e).weapons)
-# define WEPSET_EQ_AE(a,e) ((_WS_##a) == (e).weapons)
-# define WEPSET_OR_AE(a,e) ((_WS_##a) |= (e).weapons)
-# define WEPSET_AND_AE(a,e) ((_WS_##a) &= (e).weapons)
-# define WEPSET_ANDNOT_AE(a,e) ((_WS_##a) &~= (e).weapons)
-# define WEPSET_CONTAINS_ANY_AE(a,e) !!((_WS_##a) & (e).weapons)
-# define WEPSET_CONTAINS_ALL_AE(a,e) !!(((_WS_##a) & (e).weapons) == (e))
+# define WEPSET_COPY_EE(e,o) ((e)._WS_weapons = (o)._WS_weapons)
+# define WEPSET_EQ_EE(e,o) ((e)._WS_weapons == (o)._WS_weapons)
+# define WEPSET_OR_EE(e,o) ((e)._WS_weapons |= (o)._WS_weapons)
+# define WEPSET_AND_EE(e,o) ((e)._WS_weapons &= (o)._WS_weapons)
+# define WEPSET_ANDNOT_EE(e,o) ((e)._WS_weapons &~= (o)._WS_weapons)
+# define WEPSET_CONTAINS_ANY_EE(e,o) !!((e)._WS_weapons & (o)._WS_weapons)
+# define WEPSET_CONTAINS_ALL_EE(e,o) !!(((e)._WS_weapons & (o)._WS_weapons) == (e)._WS_weapons)
+
+# define WEPSET_COPY_EA(e,a) ((e)._WS_weapons = (_WS_##a))
+# define WEPSET_EQ_EA(e,a) ((e)._WS_weapons == (_WS_##a))
+# define WEPSET_OR_EA(e,a) ((e)._WS_weapons |= (_WS_##a))
+# define WEPSET_AND_EA(e,a) ((e)._WS_weapons &= (_WS_##a))
+# define WEPSET_ANDNOT_EA(e,a) ((e)._WS_weapons &~= (_WS_##a))
+# define WEPSET_CONTAINS_ANY_EA(e,a) !!((e)._WS_weapons & (_WS_##a))
+# define WEPSET_CONTAINS_ALL_EA(e,a) !!(((e)._WS_weapons & (_WS_##a)) == (_WS_##a))
+
+# define WEPSET_COPY_EW(e,w) ((e)._WS_weapons = power2of((w) - WEP_FIRST))
+# define WEPSET_EQ_EW(e,w) ((e)._WS_weapons == power2of((w) - WEP_FIRST))
+# define WEPSET_OR_EW(e,w) ((e)._WS_weapons |= power2of((w) - WEP_FIRST))
+# define WEPSET_AND_EW(e,w) ((e)._WS_weapons &= power2of((w) - WEP_FIRST))
+# define WEPSET_ANDNOT_EW(e,w) ((e)._WS_weapons &~= power2of((w) - WEP_FIRST))
+# define WEPSET_CONTAINS_EW(e,w) !!((e)._WS_weapons & power2of((w) - WEP_FIRST))
+
+# define WEPSET_COPY_AE(a,e) ((_WS_##a) = (e)._WS_weapons)
+# define WEPSET_EQ_AE(a,e) ((_WS_##a) == (e)._WS_weapons)
+# define WEPSET_OR_AE(a,e) ((_WS_##a) |= (e)._WS_weapons)
+# define WEPSET_AND_AE(a,e) ((_WS_##a) &= (e)._WS_weapons)
+# define WEPSET_ANDNOT_AE(a,e) ((_WS_##a) &~= (e)._WS_weapons)
+# define WEPSET_CONTAINS_ANY_AE(a,e) !!((_WS_##a) & (e)._WS_weapons)
+# define WEPSET_CONTAINS_ALL_AE(a,e) !!(((_WS_##a) & (e)._WS_weapons) == (e))
 
 # define WEPSET_COPY_AA(a,b) ((_WS_##a) = (_WS_##b))
 # define WEPSET_EQ_AA(a,b) ((_WS_##a) == (_WS_##b))
@@ -148,6 +148,11 @@ void register_weapons_done();
 # ifdef CSQC
 #  define WEPSET_COPY_AS(a) ((_WS_##a) = getstatf(STAT_WEAPONS))
 # endif
+
+# ifdef SVQC
+#  define WEPSET_ADDSTAT() addstat(STAT_WEAPONS, AS_INT, _WS_weapons)
+# endif
+
 #endif
 
 float WEP_COUNT;
index 9dd02ca4c2955e25b1c1347343ee0a7e62d9a7b7..166acac675b08c52bf38988e23ea46bc534a7f19 100644 (file)
@@ -536,7 +536,7 @@ string _MapInfo_GetDefaultEx(float t)
 {
        entity e;
        for(e = MapInfo_Type_first; e; e = e.enemy)
-               if(t == e.weapons)
+               if(t == e.items)
                        return e.model2;
        return "";
 }
@@ -659,7 +659,7 @@ float MapInfo_Type_FromString(string t)
                return MAPINFO_TYPE_ALL;
        for(e = MapInfo_Type_first; e; e = e.enemy)
                if(t == e.mdl)
-                       return e.weapons;
+                       return e.items;
        return 0;
 }
 
@@ -669,7 +669,7 @@ string MapInfo_Type_ToString(float t)
        if(t == MAPINFO_TYPE_ALL)     
                return "all";
        for(e = MapInfo_Type_first; e; e = e.enemy)
-               if(t == e.weapons)
+               if(t == e.items)
                        return e.mdl;
        return "";
 }
@@ -678,7 +678,7 @@ string MapInfo_Type_ToText(float t)
 {
        entity e;
        for(e = MapInfo_Type_first; e; e = e.enemy)
-               if(t == e.weapons)
+               if(t == e.items)
                        return e.message;
        return _("@!#%'n Tuba Throwing");
 }
@@ -1175,8 +1175,8 @@ float MapInfo_CurrentGametype()
        prev = cvar("gamecfg");
        for(e = MapInfo_Type_first; e; e = e.enemy)
                if(cvar(e.netname))
-                       if(prev != e.weapons)
-                               return e.weapons;
+                       if(prev != e.items)
+                               return e.items;
        if(prev)
                return prev;
        return MAPINFO_TYPE_DEATHMATCH;
@@ -1205,7 +1205,7 @@ void MapInfo_SwitchGameType(float t)
 {
        entity e;
        for(e = MapInfo_Type_first; e; e = e.enemy)
-               cvar_set(e.netname, (t == e.weapons) ? "1" : "0");
+               cvar_set(e.netname, (t == e.items) ? "1" : "0");
 }
 
 void MapInfo_LoadMap(string s, float reinit)
index a3bb4efbfede216fc0a9ad997bda46a6479805c6..698bd7e40ace811727cf2588b1c62e92ee4213e9 100644 (file)
@@ -3,7 +3,7 @@ entity MapInfo_Type_first;
 entity MapInfo_Type_last;
 .entity enemy; // internal next pointer
 
-.float weapons; // game type ID
+.float items; // game type ID
 .string netname; // game type name as in cvar (with g_ prefix)
 .string mdl; // game type short name
 .string message; // human readable name
@@ -17,7 +17,7 @@ entity MapInfo_Type_last;
                MAPINFO_TYPE_##NAME = MAPINFO_TYPE_ALL + 1; \
                MAPINFO_TYPE_ALL |= MAPINFO_TYPE_##NAME; \
                MapInfo_Type##g_name = spawn(); \
-               MapInfo_Type##g_name.weapons = MAPINFO_TYPE_##NAME; \
+               MapInfo_Type##g_name.items = MAPINFO_TYPE_##NAME; \
                MapInfo_Type##g_name.netname = #g_name; \
                MapInfo_Type##g_name.mdl = #sname; \
                MapInfo_Type##g_name.message = hname; \
index dabfa9803258da051ab66ef7722616b514477df2..7581a7d7155ce032a41ee11882ed9bf076aeda90 100644 (file)
@@ -489,7 +489,6 @@ float independent_players;
 
 string clientstuff;
 .float phase;
-.float weapons;
 .float pressedkeys;
 
 .float porto_forbidden;
index 6f0e631ea50fd6db8cddb2a7f9afb4f4064f3026..d787d480da4b26e29a6aec9cb047cbb82312df37 100644 (file)
@@ -764,7 +764,7 @@ void spawnfunc_worldspawn (void)
 
        WeaponStats_Init();
 
-       addstat(STAT_WEAPONS, AS_INT, weapons);
+       WEPSET_ADDSTAT();
        addstat(STAT_SWITCHWEAPON, AS_INT, switchweapon);
        addstat(STAT_SWITCHINGWEAPON, AS_INT, switchingweapon);
        addstat(STAT_GAMESTARTTIME, AS_FLOAT, stat_game_starttime);