From 6849fbb9ac40a1c49b1f6c58cdcb236dabbf38db Mon Sep 17 00:00:00 2001 From: TimePath Date: Fri, 14 Aug 2015 20:27:33 +1000 Subject: [PATCH] Use ATTRIB --- qcsrc/common/weapons/all.qc | 19 +----------- qcsrc/common/weapons/all.qh | 62 ++++++++++++++++++++++++------------- 2 files changed, 42 insertions(+), 39 deletions(-) diff --git a/qcsrc/common/weapons/all.qc b/qcsrc/common/weapons/all.qc index b0262d433..aec31127f 100644 --- a/qcsrc/common/weapons/all.qc +++ b/qcsrc/common/weapons/all.qc @@ -151,24 +151,7 @@ WepSet ReadWepSet() 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 0 0'; - dummy_weapon_info.netname = ""; - dummy_weapon_info.message = "AOL CD Thrower"; - dummy_weapon_info.weapon_func = w_null; - dummy_weapon_info.wpmodel = ""; - dummy_weapon_info.mdl = ""; - dummy_weapon_info.model = ""; - dummy_weapon_info.spawnflags = 0; - dummy_weapon_info.impulse = -1; - dummy_weapon_info.bot_pickupbasevalue = 0; - dummy_weapon_info.ammo_field = ammo_none; - - dummy_weapon_info.w_crosshair = "gfx/crosshair1"; - dummy_weapon_info.w_crosshair_size = 1; - dummy_weapon_info.model2 = ""; + dummy_weapon_info = NEW(Weapon); weaponorder_byid = ""; for (int i = WEP_MAXCOUNT - 1; i >= 0; --i) diff --git a/qcsrc/common/weapons/all.qh b/qcsrc/common/weapons/all.qh index ec3e968b2..ac839a53a 100644 --- a/qcsrc/common/weapons/all.qh +++ b/qcsrc/common/weapons/all.qh @@ -140,27 +140,49 @@ int GetAmmoStat(.int ammotype); // Weapon Registration // ===================== +bool w_null(int) { return false; } + +/** fields which are explicitly/manually set are marked with "M", fields set automatically are marked with "A" */ CLASS(Weapon, Object) ATTRIB(Weapon, m_id, int, 0) - // entity properties of weaponinfo: - // fields which are explicitly/manually set are marked with "M", fields set automatically are marked with "A" - .int weapon; // M: WEP_id // WEP_... - .WepSet weapons; // A: WEPSET_id // WEPSET_... - .float(float) weapon_func; // M: function // w_... - ..int ammo_field; // M: ammotype // main ammo field - .int impulse; // M: impulse // weapon impulse - .int spawnflags; // M: flags // WEPSPAWNFLAG_... combined - .float bot_pickupbasevalue; // M: rating // bot weapon priority - .vector wpcolor; // M: color // waypointsprite color - .string wpmodel; // A: wpn-id // wpn- sprite name - .string mdl; // M: modelname // name of model (without g_ v_ or h_ prefixes) - .string model; // A: modelname // full path to g_ model - .string w_simplemdl; // M: simplemdl // simpleitems weapon model/image - .string w_crosshair; // M: crosshair // per-weapon crosshair: "CrosshairImage Size" - .float w_crosshair_size; // A: crosshair // per-weapon crosshair size (argument two of "crosshair" field) - .string model2; // M: wepimg // "weaponfoobar" side view image file of weapon // WEAPONTODO: Move out of skin files, move to common files - .string netname; // M: refname // reference name name - .string message; // M: wepname // human readable name + /** + * M: WEP_id : WEP_... + * you can recognize dummies when this == 0 + */ + ATTRIB(Weapon, weapon, int, 0); + /** A: WEPSET_id : WEPSET_... */ + ATTRIB(Weapon, weapons, WepSet, '0 0 0'); + /** M: function : w_... */ + ATTRIB(Weapon, weapon_func, bool(int), w_null); + /** M: ammotype : main ammo field */ + ATTRIB(Weapon, ammo_field, .int, ammo_none); + /** M: impulse : weapon impulse */ + ATTRIB(Weapon, impulse, int, -1); + /** M: flags : WEPSPAWNFLAG_... combined */ + ATTRIB(Weapon, spawnflags, int, 0); + /** M: rating : bot weapon priority */ + ATTRIB(Weapon, bot_pickupbasevalue, float, 0); + /** M: color : waypointsprite color */ + ATTRIB(Weapon, wpcolor, vector, '0 0 0'); + /** A: wpn-id : wpn- sprite name */ + ATTRIB(Weapon, wpmodel, string, ""); + /** M: modelname : name of model (without g_ v_ or h_ prefixes) */ + ATTRIB(Weapon, mdl, string, ""); + /** A: modelname : full path to g_ model */ + ATTRIB(Weapon, model, string, ""); + /** M: simplemdl : simpleitems weapon model/image */ + ATTRIB(Weapon, w_simplemdl, string, "foobar"); + /** M: crosshair : per-weapon crosshair: "CrosshairImage Size" */ + ATTRIB(Weapon, w_crosshair, string, "gfx/crosshair1"); + /** A: crosshair : per-weapon crosshair size (argument two of "crosshair" field) */ + ATTRIB(Weapon, w_crosshair_size, float, 1); + /** M: wepimg : "weaponfoobar" side view image file of weapon. WEAPONTODO: Move out of skin files, move to common files */ + ATTRIB(Weapon, model2, string, ""); + /** M: refname : reference name name */ + ATTRIB(Weapon, netname, string, ""); + /** M: wepname : human readable name */ + ATTRIB(Weapon, message, string, "AOL CD Thrower"); + CONSTRUCTOR(Weapon, bool(int) function, .int ammotype, @@ -221,8 +243,6 @@ entity dummy_weapon_info; register_weapon(this, this.m_id, WEPSET_##id); \ } -bool w_null(int) { return false; } - #ifndef MENUQC #define REGISTER_WEAPON(id, function, ammotype, impulse, flags, rating, color, modelname, simplemdl, crosshair, wepimg, refname, wepname) \ bool function(int); \ -- 2.39.2