Fix some item type magic numbers (#6487)

* Fix item type magic numbers

* Add weapon and magazine macros
This commit is contained in:
Dystopian
2018-09-13 06:29:56 +03:00
committed by PabstMirror
parent 364f84d382
commit 0e980907fe
6 changed files with 73 additions and 63 deletions

View File

@ -33,9 +33,7 @@ for "_i" from 0 to (count _cfgWeapons)-1 do {
if (isClass _weaponConfig) then { if (isClass _weaponConfig) then {
private _weapon = configName _weaponConfig; private _weapon = configName _weaponConfig;
private _weaponType = getNumber (_weaponConfig >> "Type"); private _weaponType = getNumber (_weaponConfig >> "Type");
if (_weaponType in [1, 2]) then { if (_weaponType in [TYPE_WEAPON_PRIMARY, TYPE_WEAPON_HANDGUN]) then {
// The weapon is a primary weapon or a handgun weapon
private _weaponInitSpeed = getNumber (_weaponConfig >> "initSpeed"); private _weaponInitSpeed = getNumber (_weaponConfig >> "initSpeed");
private _magazines = getArray (_weaponConfig >> "magazines"); private _magazines = getArray (_weaponConfig >> "magazines");
{ {

View File

@ -81,37 +81,37 @@ if (_items isEqualType true) then {
/* Weapon acc */ /* Weapon acc */
case ( case (
isClass (_configItemInfo) && isClass (_configItemInfo) &&
{(getNumber (_configItemInfo >> "type")) in [101, 201, 301, 302]} && {(getNumber (_configItemInfo >> "type")) in [TYPE_MUZZLE, TYPE_OPTICS, TYPE_FLASHLIGHT, TYPE_BIPOD]} &&
{!(_x isKindOf ["CBA_MiscItem", (_configCfgWeapons)])} {!(_x isKindOf ["CBA_MiscItem", (_configCfgWeapons)])}
): { ): {
switch (getNumber (_configItemInfo >> "type")) do { switch (getNumber (_configItemInfo >> "type")) do {
case 201: { case TYPE_OPTICS: {
(_cargo select 1) select 0 pushBackUnique _x; (_cargo select 1) select 0 pushBackUnique _x;
}; };
case 301: { case TYPE_FLASHLIGHT: {
(_cargo select 1) select 1 pushBackUnique _x; (_cargo select 1) select 1 pushBackUnique _x;
}; };
case 101: { case TYPE_MUZZLE: {
(_cargo select 1) select 2 pushBackUnique _x; (_cargo select 1) select 2 pushBackUnique _x;
}; };
case 302: { case TYPE_BIPOD: {
(_cargo select 1) select 3 pushBackUnique _x; (_cargo select 1) select 3 pushBackUnique _x;
}; };
}; };
}; };
/* Headgear */ /* Headgear */
case (isClass (_configItemInfo) && case (isClass (_configItemInfo) &&
{getNumber (_configItemInfo >> "type") == 605}): { {getNumber (_configItemInfo >> "type") == TYPE_HEADGEAR}): {
(_cargo select 3) pushBackUnique _x; (_cargo select 3) pushBackUnique _x;
}; };
/* Uniform */ /* Uniform */
case (isClass (_configItemInfo) && case (isClass (_configItemInfo) &&
{getNumber (_configItemInfo >> "type") == 801}): { {getNumber (_configItemInfo >> "type") == TYPE_UNIFORM}): {
(_cargo select 4) pushBackUnique _x; (_cargo select 4) pushBackUnique _x;
}; };
/* Vest */ /* Vest */
case (isClass (_configItemInfo) && case (isClass (_configItemInfo) &&
{getNumber (_configItemInfo >> "type") == 701}): { {getNumber (_configItemInfo >> "type") == TYPE_VEST}): {
(_cargo select 5) pushBackUnique _x; (_cargo select 5) pushBackUnique _x;
}; };
/* NVgs */ /* NVgs */
@ -120,7 +120,7 @@ if (_items isEqualType true) then {
}; };
/* Binos */ /* Binos */
case (_simulationType == "Binocular" || case (_simulationType == "Binocular" ||
{(_simulationType == 'Weapon') && {(getNumber (_configCfgWeapons >> _x >> 'type') == 4096)}}): { {(_simulationType == 'Weapon') && {(getNumber (_configCfgWeapons >> _x >> 'type') == TYPE_BINOCULAR_AND_NVG)}}): {
(_cargo select 9) pushBackUnique _x; (_cargo select 9) pushBackUnique _x;
}; };
/* Map */ /* Map */
@ -145,20 +145,20 @@ if (_items isEqualType true) then {
}; };
/* UAV terminals */ /* UAV terminals */
case (isClass (_configItemInfo) && case (isClass (_configItemInfo) &&
{getNumber (_configItemInfo >> "type") == 621}): { {getNumber (_configItemInfo >> "type") == TYPE_UAV_TERMINAL}): {
(_cargo select 14) pushBackUnique _x; (_cargo select 14) pushBackUnique _x;
}; };
/* Weapon, at the bottom to avoid adding binos */ /* Weapon, at the bottom to avoid adding binos */
case (isClass (_configCfgWeapons >> _x >> "WeaponSlotsInfo") && case (isClass (_configCfgWeapons >> _x >> "WeaponSlotsInfo") &&
{getNumber (_configCfgWeapons >> _x >> 'type') != 4096}): { {getNumber (_configCfgWeapons >> _x >> 'type') != TYPE_BINOCULAR_AND_NVG}): {
switch (getNumber (_configCfgWeapons >> _x >> "type")) do { switch (getNumber (_configCfgWeapons >> _x >> "type")) do {
case 1: { case TYPE_WEAPON_PRIMARY: {
(_cargo select 0) select 0 pushBackUnique ([_x] call bis_fnc_baseWeapon); (_cargo select 0) select 0 pushBackUnique ([_x] call bis_fnc_baseWeapon);
}; };
case 2: { case TYPE_WEAPON_HANDGUN: {
(_cargo select 0) select 2 pushBackUnique ([_x] call bis_fnc_baseWeapon); (_cargo select 0) select 2 pushBackUnique ([_x] call bis_fnc_baseWeapon);
}; };
case 4: { case TYPE_WEAPON_SECONDARY: {
(_cargo select 0) select 1 pushBackUnique ([_x] call bis_fnc_baseWeapon); (_cargo select 0) select 1 pushBackUnique ([_x] call bis_fnc_baseWeapon);
}; };
}; };
@ -166,9 +166,9 @@ if (_items isEqualType true) then {
/* Misc items */ /* Misc items */
case ( case (
isClass (_configItemInfo) && isClass (_configItemInfo) &&
((getNumber (_configItemInfo >> "type")) in [101, 201, 301, 302] && ((getNumber (_configItemInfo >> "type")) in [TYPE_MUZZLE, TYPE_OPTICS, TYPE_FLASHLIGHT, TYPE_BIPOD] &&
{(_x isKindOf ["CBA_MiscItem", (_configCfgWeapons)])}) || {(_x isKindOf ["CBA_MiscItem", (_configCfgWeapons)])}) ||
{(getNumber (_configItemInfo >> "type")) in [401, 619, 620]} || {(getNumber (_configItemInfo >> "type")) in [TYPE_FIRST_AID_KIT, TYPE_MEDIKIT, TYPE_TOOLKIT]} ||
{(getText (_configCfgWeapons >> _x >> "simulation")) == "ItemMineDetector"} {(getText (_configCfgWeapons >> _x >> "simulation")) == "ItemMineDetector"}
): { ): {
(_cargo select 17) pushBackUnique _x; (_cargo select 17) pushBackUnique _x;
@ -193,7 +193,7 @@ if (_items isEqualType true) then {
switch true do { switch true do {
// Rifle, handgun, secondary weapons mags // Rifle, handgun, secondary weapons mags
case ( case (
(getNumber (configFile >> "CfgMagazines" >> _x >> "type") in [256,512,1536,16]) && (getNumber (configFile >> "CfgMagazines" >> _x >> "type") in [TYPE_MAGAZINE_PRIMARY_AND_THROW,TYPE_MAGAZINE_SECONDARY_AND_PUT,1536,TYPE_MAGAZINE_HANDGUN_AND_GL]) &&
{!(_x in _grenadeList)} && {!(_x in _grenadeList)} &&
{!(_x in _putList)} {!(_x in _putList)}
): { ): {

View File

@ -46,23 +46,23 @@ private _configCfgWeapons = configFile >> "CfgWeapons"; //Save this lookup in va
/* Weapon acc */ /* Weapon acc */
case ( case (
_hasItemInfo && _hasItemInfo &&
{_itemInfoType in [101, 201, 301, 302]} && {_itemInfoType in [TYPE_MUZZLE, TYPE_OPTICS, TYPE_FLASHLIGHT, TYPE_BIPOD]} &&
{!(configName _x isKindOf ["CBA_MiscItem", (_configCfgWeapons)])} {!(configName _x isKindOf ["CBA_MiscItem", (_configCfgWeapons)])}
): { ): {
//Convert type to array index //Convert type to array index
(_cargo select 1) select ([201,301,101,302] find _itemInfoType) pushBackUnique _className; (_cargo select 1) select ([TYPE_OPTICS,TYPE_FLASHLIGHT,TYPE_MUZZLE,TYPE_BIPOD] find _itemInfoType) pushBackUnique _className;
}; };
/* Headgear */ /* Headgear */
case (_itemInfoType == 605): { case (_itemInfoType == TYPE_HEADGEAR): {
(_cargo select 3) pushBackUnique _className; (_cargo select 3) pushBackUnique _className;
}; };
/* Uniform */\ /* Uniform */\
case (_itemInfoType == 801): { case (_itemInfoType == TYPE_UNIFORM): {
(_cargo select 4) pushBackUnique _className; (_cargo select 4) pushBackUnique _className;
}; };
/* Vest */ /* Vest */
case (_itemInfoType == 701): { case (_itemInfoType == TYPE_VEST): {
(_cargo select 5) pushBackUnique _className; (_cargo select 5) pushBackUnique _className;
}; };
/* NVgs */ /* NVgs */
@ -71,7 +71,7 @@ private _configCfgWeapons = configFile >> "CfgWeapons"; //Save this lookup in va
}; };
/* Binos */ /* Binos */
case (_simulationType == "Binocular" || case (_simulationType == "Binocular" ||
((_simulationType == 'Weapon') && {(getNumber (_x >> 'type') == 4096)})): { ((_simulationType == 'Weapon') && {(getNumber (_x >> 'type') == TYPE_BINOCULAR_AND_NVG)})): {
(_cargo select 9) pushBackUnique _className; (_cargo select 9) pushBackUnique _className;
}; };
/* Map */ /* Map */
@ -95,20 +95,20 @@ private _configCfgWeapons = configFile >> "CfgWeapons"; //Save this lookup in va
(_cargo select 14) pushBackUnique _className; (_cargo select 14) pushBackUnique _className;
}; };
/* UAV terminals */ /* UAV terminals */
case (_itemInfoType == 621): { case (_itemInfoType == TYPE_UAV_TERMINAL): {
(_cargo select 14) pushBackUnique _className; (_cargo select 14) pushBackUnique _className;
}; };
/* Weapon, at the bottom to avoid adding binos */ /* Weapon, at the bottom to avoid adding binos */
case (isClass (_x >> "WeaponSlotsInfo") && case (isClass (_x >> "WeaponSlotsInfo") &&
{getNumber (_x >> 'type') != 4096}): { {getNumber (_x >> 'type') != TYPE_BINOCULAR_AND_NVG}): {
switch (getNumber (_x >> "type")) do { switch (getNumber (_x >> "type")) do {
case 1: { case TYPE_WEAPON_PRIMARY: {
(_cargo select 0) select 0 pushBackUnique (_className call bis_fnc_baseWeapon); (_cargo select 0) select 0 pushBackUnique (_className call bis_fnc_baseWeapon);
}; };
case 2: { case TYPE_WEAPON_HANDGUN: {
(_cargo select 0) select 2 pushBackUnique (_className call bis_fnc_baseWeapon); (_cargo select 0) select 2 pushBackUnique (_className call bis_fnc_baseWeapon);
}; };
case 4: { case TYPE_WEAPON_SECONDARY: {
(_cargo select 0) select 1 pushBackUnique (_className call bis_fnc_baseWeapon); (_cargo select 0) select 1 pushBackUnique (_className call bis_fnc_baseWeapon);
}; };
}; };
@ -116,9 +116,9 @@ private _configCfgWeapons = configFile >> "CfgWeapons"; //Save this lookup in va
/* Misc items */ /* Misc items */
case ( case (
_hasItemInfo && _hasItemInfo &&
(_itemInfoType in [101, 201, 301, 302] && (_itemInfoType in [TYPE_MUZZLE, TYPE_OPTICS, TYPE_FLASHLIGHT, TYPE_BIPOD] &&
{(_className isKindOf ["CBA_MiscItem", (_configCfgWeapons)])}) || {(_className isKindOf ["CBA_MiscItem", (_configCfgWeapons)])}) ||
{_itemInfoType in [401, 619, 620]} || {_itemInfoType in [TYPE_FIRST_AID_KIT, TYPE_MEDIKIT, TYPE_TOOLKIT]} ||
{(getText ( _x >> "simulation")) == "ItemMineDetector"} {(getText ( _x >> "simulation")) == "ItemMineDetector"}
): { ): {
(_cargo select 17) pushBackUnique _className; (_cargo select 17) pushBackUnique _className;
@ -142,7 +142,7 @@ private _putList = [];
switch true do { switch true do {
// Rifle, handgun, secondary weapons mags // Rifle, handgun, secondary weapons mags
case ( case (
(getNumber (_x >> "type") in [256,512,1536,16]) && (getNumber (_x >> "type") in [TYPE_MAGAZINE_PRIMARY_AND_THROW,TYPE_MAGAZINE_SECONDARY_AND_PUT,1536,TYPE_MAGAZINE_HANDGUN_AND_GL]) &&
{!(_className in _grenadeList)} && {!(_className in _grenadeList)} &&
{!(_className in _putList)} {!(_className in _putList)}
): { ): {

View File

@ -38,35 +38,35 @@ private _default = ["item", "magazine"] select (_cfgType == "CfgMagazines");
switch (true) do { switch (true) do {
case (_type == 0): {[_default, "unknown"]}; case (_type == 0): {[_default, "unknown"]};
case (_type == 2^0): {["weapon", "primary"]}; case (_type == TYPE_WEAPON_PRIMARY): {["weapon", "primary"]};
case (_type == 2^1): {["weapon", "handgun"]}; case (_type == TYPE_WEAPON_HANDGUN): {["weapon", "handgun"]};
case (_type == 2^2): {["weapon", "secondary"]}; case (_type == TYPE_WEAPON_SECONDARY): {["weapon", "secondary"]};
case (_type < 2^4): {["weapon", "unknown"]}; case (_type < TYPE_MAGAZINE_HANDGUN_AND_GL): {["weapon", "unknown"]};
case (_type == 2^4): {["magazine", "handgun"]}; // handgun case (_type == TYPE_MAGAZINE_HANDGUN_AND_GL): {["magazine", "handgun"]}; // handgun
case (_type == 2^8): {["magazine", "primary"]}; // rifle case (_type == TYPE_MAGAZINE_PRIMARY_AND_THROW): {["magazine", "primary"]}; // rifle
case (_type == 2^9): {["magazine", "secondary"]}; // rpg, mg, mines case (_type == TYPE_MAGAZINE_SECONDARY_AND_PUT): {["magazine", "secondary"]}; // rpg, mg, mines
//case (_type < 2^11): {["magazine", "unknown"]}; //case (_type < 2^11): {["magazine", "unknown"]};
case (_type == 101): {["item", "muzzle"]}; case (_type == TYPE_MUZZLE): {["item", "muzzle"]};
case (_type == 201): {["item", "optics"]}; case (_type == TYPE_OPTICS): {["item", "optics"]};
case (_type == 301): {["item", "flashlight"]}; case (_type == TYPE_FLASHLIGHT): {["item", "flashlight"]};
case (_type == 302): {["item", "under"]}; // czech for bipod item case (_type == TYPE_BIPOD): {["item", "under"]}; // czech for bipod item
case (_type == 401): {["item", "first_aid_kit"]}; case (_type == TYPE_FIRST_AID_KIT): {["item", "first_aid_kit"]};
case (_type == 501): {["item", "fins"]}; // not implemented case (_type == TYPE_FINS): {["item", "fins"]}; // not implemented
case (_type == 601): {["item", "breathing_bomb"]}; // not implemented case (_type == TYPE_BREATHING_BOMB): {["item", "breathing_bomb"]}; // not implemented
case (_type == 603): {["item", "goggles"]}; case (_type == TYPE_GOGGLE): {["item", "goggles"]};
case (_type == 604): {["item", "scuba"]}; // not implemented case (_type == TYPE_SCUBA): {["item", "scuba"]}; // not implemented
case (_type == 605): {["item", "headgear"]}; case (_type == TYPE_HEADGEAR): {["item", "headgear"]};
case (_type == 611): {["item", "radio"]}; case (_type == TYPE_RADIO): {["item", "radio"]};
case (_type == 616): {["item", "hmd"]}; case (_type == TYPE_HMD): {["item", "hmd"]};
case (_type == 617): {["item", "binocular"]}; case (_type == TYPE_BINOCULAR): {["item", "binocular"]};
case (_type == 619): {["item", "medikit"]}; case (_type == TYPE_MEDIKIT): {["item", "medikit"]};
case (_type == 620): {["item", "toolkit"]}; case (_type == TYPE_TOOLKIT): {["item", "toolkit"]};
case (_type == 621): {["item", "uav_terminal"]}; case (_type == TYPE_UAV_TERMINAL): {["item", "uav_terminal"]};
case (_type == 701): {["item", "vest"]}; case (_type == TYPE_VEST): {["item", "vest"]};
case (_type == 801): {["item", "uniform"]}; case (_type == TYPE_UNIFORM): {["item", "uniform"]};
case (_type == 2^12): { case (_type == TYPE_BINOCULAR_AND_NVG): {
switch (toLower _simulation) do { switch (toLower _simulation) do {
case ("weapon"): {["weapon", "binocular"]}; case ("weapon"): {["weapon", "binocular"]};
case ("binocular"): {["weapon", "binocular"]}; case ("binocular"): {["weapon", "binocular"]};
@ -76,8 +76,8 @@ switch (true) do {
}; };
}; };
case (_type == 2^16): {["weapon", "vehicle"]}; case (_type == TYPE_WEAPON_VEHICLE): {["weapon", "vehicle"]};
case (_type == 2^17): { case (_type == TYPE_ITEM): {
switch (toLower _simulation) do { switch (toLower _simulation) do {
case ("itemmap"): {["item", "map"]}; case ("itemmap"): {["item", "map"]};
case ("itemgps"): {["item", "gps"]}; case ("itemgps"): {["item", "gps"]};

View File

@ -12,7 +12,7 @@ class CfgWeapons {
class CBA_MiscItem_ItemInfo; class CBA_MiscItem_ItemInfo;
class ACE_ExplosiveItem: CBA_MiscItem_ItemInfo { class ACE_ExplosiveItem: CBA_MiscItem_ItemInfo {
allowedSlots[] = {801,701,901}; allowedSlots[] = {TYPE_UNIFORM,TYPE_VEST,TYPE_BACKPACK};
//type = 201; //type = 201;
}; };

View File

@ -60,6 +60,18 @@
count = COUNT; \ count = COUNT; \
} }
// weapon types
#define TYPE_WEAPON_PRIMARY 1
#define TYPE_WEAPON_HANDGUN 2
#define TYPE_WEAPON_SECONDARY 4
// magazine types
#define TYPE_MAGAZINE_HANDGUN_AND_GL 16 // mainly
#define TYPE_MAGAZINE_PRIMARY_AND_THROW 256
#define TYPE_MAGAZINE_SECONDARY_AND_PUT 512 // mainly
// more types
#define TYPE_BINOCULAR_AND_NVG 4096
#define TYPE_WEAPON_VEHICLE 65536
#define TYPE_ITEM 131072
// item types // item types
#define TYPE_DEFAULT 0 #define TYPE_DEFAULT 0
#define TYPE_MUZZLE 101 #define TYPE_MUZZLE 101