From: Rudolf Polzer Date: Tue, 22 May 2012 07:58:34 +0000 (+0200) Subject: add ability to read/write weapon sets X-Git-Tag: xonotic-v0.7.0~314^2~7 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=c401b2d4fd3472267315ac6f547167c6a2578392;p=xonotic%2Fxonotic-data.pk3dir.git add ability to read/write weapon sets --- diff --git a/qcsrc/common/items.qh b/qcsrc/common/items.qh index 5a39d2148..77465dc4f 100644 --- a/qcsrc/common/items.qh +++ b/qcsrc/common/items.qh @@ -101,11 +101,16 @@ float WEP_LAST; # define WEPSET_BIT(a) power2of((a) - WEP_FIRST) # define WEPSET_DECLARE_A(a) float _WS_##a # define WEPSET_CLEAR_E(e) ((e)._WS_weapons = 0) -# define WEPSET_CLEAR_A(a) ((_WS_##a) = 0) +# define WEPSET_CLEAR_A(a) (_WS_##a = 0) # define WEPSET_EMPTY_E(e) ((e)._WS_weapons == 0) -# define WEPSET_EMPTY_A(a) ((_WS_##a) == 0) -# define WEPSET_COPY_AS(a) ((_WS_##a) = getstati(STAT_WEAPONS)) +# define WEPSET_EMPTY_A(a) (_WS_##a == 0) +# define WEPSET_COPY_AS(a) (_WS_##a = getstati(STAT_WEAPONS)) # define WEPSET_ADDSTAT() addstat(STAT_WEAPONS, AS_INT, _WS_weapons) +# define WEPSET_WRITE_E(dest,a) WriteInt24_t(dest, (a)._WS_weapons) +# define WEPSET_WRITE_A(dest,a) WriteInt24_t(dest, _WS_##a) +# define WEPSET_WRITE_W(dest,a) WriteInt24_t(dest, WEPSET_BIT(a)) +# define WEPSET_READ_E(dest,a) (a)._WS_weapons = ReadInt24_t() +# define WEPSET_READ_A(dest,a) (_WS_##a) = ReadInt24_t() # define WEPSET_OP1_EE(a,b,mergeop,x) ((a)._WS_weapons x (b)._WS_weapons) # define WEPSET_OP2_EE(a,b,mergeop,x,y) ((a)._WS_weapons x (b)._WS_weapons y (a)._WS_weapons) # define WEPSET_OP1_EA(a,b,mergeop,x) ((a)._WS_weapons x _WS_##b) @@ -132,6 +137,11 @@ float WEP_LAST; # define WEPSET_EMPTY_A(a) ((_WS1_##a) == 0 && (_WS2_##a) == 0) # define WEPSET_COPY_AS(a) ((_WS1_##a) = getstati(STAT_WEAPONS), (_WS2_##a) = getstati(STAT_WEAPONS2)) # define WEPSET_ADDSTAT() addstat(STAT_WEAPONS, AS_INT, _WS1_weapons); addstat(STAT_WEAPONS2, AS_INT, _WS2_weapons) +# define WEPSET_WRITE_E(dest,a) WriteInt24_t(dest, (a)._WS1_weapons); WriteInt24_t(dest, (a)._WS2_weapons) +# define WEPSET_WRITE_A(dest,a) WriteInt24_t(dest, _WS1_##a); WriteInt24_t(dest, _WS2_##a) +# define WEPSET_WRITE_W(dest,a) WriteInt24_t(dest, WEPSET_BIT1(a)); WriteInt24_t(dest, WEPSET_BIT2(a)) +# define WEPSET_READ_E(dest,a) (a)._WS1_weapons = ReadInt24_t(); (a)._WS2_weapons = ReadInt24_t() +# define WEPSET_READ_A(dest,a) (_WS1_##a) = ReadInt24_t(); (_WS2_##a) = ReadInt24_t() # define WEPSET_OP1_EE(a,b,mergeop,x) (((a)._WS1_weapons x (b)._WS1_weapons) mergeop ((a)._WS2_weapons x (b)._WS2_weapons)) # define WEPSET_OP2_EE(a,b,mergeop,x,y) (((a)._WS1_weapons x (b)._WS1_weapons y (a)._WS1_weapons) mergeop ((a)._WS2_weapons x (b)._WS2_weapons y (a)._WS2_weapons)) # define WEPSET_OP1_EA(a,b,mergeop,x) (((a)._WS1_weapons x _WS1_##b) mergeop ((a)._WS2_weapons x _WS2_##b))