From: Rudolf Polzer Date: Sun, 4 Mar 2012 17:36:57 +0000 (+0100) Subject: SVQC finished X-Git-Tag: xonotic-v0.7.0~348^2~1^2~29 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=c8732e84f73fed16a61e05741f60c530bcd6f151;p=xonotic%2Fxonotic-data.pk3dir.git SVQC finished --- diff --git a/qcsrc/common/items.qc b/qcsrc/common/items.qc index d7293ef69..1282d428a 100644 --- a/qcsrc/common/items.qc +++ b/qcsrc/common/items.qc @@ -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; diff --git a/qcsrc/common/items.qh b/qcsrc/common/items.qh index 615929119..7f2f4a314 100644 --- a/qcsrc/common/items.qh +++ b/qcsrc/common/items.qh @@ -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; diff --git a/qcsrc/common/mapinfo.qc b/qcsrc/common/mapinfo.qc index 9dd02ca4c..166acac67 100644 --- a/qcsrc/common/mapinfo.qc +++ b/qcsrc/common/mapinfo.qc @@ -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) diff --git a/qcsrc/common/mapinfo.qh b/qcsrc/common/mapinfo.qh index a3bb4efbf..698bd7e40 100644 --- a/qcsrc/common/mapinfo.qh +++ b/qcsrc/common/mapinfo.qh @@ -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; \ diff --git a/qcsrc/server/defs.qh b/qcsrc/server/defs.qh index dabfa9803..7581a7d71 100644 --- a/qcsrc/server/defs.qh +++ b/qcsrc/server/defs.qh @@ -489,7 +489,6 @@ float independent_players; string clientstuff; .float phase; -.float weapons; .float pressedkeys; .float porto_forbidden; diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index 6f0e631ea..d787d480d 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -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);