diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 6dacdf316b..2b57cdc598 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -73,7 +73,6 @@ PREP(getHitPoints); PREP(getHitPointsWithSelections); PREP(getInPosition); PREP(getItemType); -PREP(getItemTypeWeapon); PREP(getMarkerType); PREP(getName); PREP(getNumberFromMissionSQM); diff --git a/addons/common/functions/fnc_getItemType.sqf b/addons/common/functions/fnc_getItemType.sqf index a6d4a76dd1..f6369e4ae9 100644 --- a/addons/common/functions/fnc_getItemType.sqf +++ b/addons/common/functions/fnc_getItemType.sqf @@ -20,10 +20,62 @@ _item = _this select 0; _cfgType = [_item] call FUNC(getConfigType); +if (_cfgType == "") exitWith {["",""]}; + if (_cfgType == "CfgGlasses") exitWith {["item","glasses"]}; -if (_cfgType == "CfgMagazines") exitWith { ["magazine", [_item] call FUNC(getItemTypeWeapon) select 1] }; +private "_config"; +_config = configFile >> _cfgType >> _item; -if (_cfgType == "CfgWeapons") exitWith { [_item] call FUNC(getItemTypeWeapon) }; +private "_type"; +_type = getNumber (_config >> "type"); -["",""] +if (isNumber (_config >> "ItemInfo" >> "type")) then { + _type = getNumber (_config >> "ItemInfo" >> "type"); +}; + +switch (true) do { + case (_type == 0): {["item","unknown"]}; + case (_type == 2^0): {["weapon","primary"]}; + case (_type == 2^1): {["weapon","handgun"]}; + case (_type == 2^2): {["weapon","secondary"]}; + case (_type < 2^4): {["weapon","unknown"]}; + case (_type == 2^4): {["magazine","handgun"]}; // handgun + case (_type == 2^8): {["magazine","primary"]}; // rifle + case (_type == 2^9): {["magazine","secondary"]}; // rpg, mg, mines + case (_type == 768): {["magazine","secondary"]}; // NLAW + case (_type == 1536): {["magazine","secondary"]}; // titan + + case (_type == 101): {["item","muzzle"]}; + case (_type == 201): {["item","optics"]}; + case (_type == 301): {["item","flashlight"]}; + case (_type == 302): {["item","under"]}; // czech for bipod item + case (_type == 401): {["item","first_aid_kit"]}; + case (_type == 501): {["item","fins"]}; // not implemented + case (_type == 601): {["item","breathing_bomb"]}; // not implemented + case (_type == 603): {["item","goggles"]}; + case (_type == 604): {["item","scuba"]}; // not implemented + case (_type == 605): {["item","headgear"]}; + case (_type == 611): {["item","radio"]}; + case (_type == 616): {["item","hmd"]}; + case (_type == 617): {["item","binocular"]}; + case (_type == 619): {["item","medikit"]}; + case (_type == 620): {["item","toolkit"]}; + case (_type == 621): {["item","uav_terminal"]}; + case (_type == 701): {["item","vest"]}; + case (_type == 801): {["item","uniform"]}; + + case (_type == 2^12): { + switch (toLower getText (_config >> "simulation")) do { + case ("binocular"): {["weapon","binocular"]}; + case ("nvgoggles"): {["item","nvgoggles"]}; + case ("itemminedetector"): {["item","minedetector"]}; + case ("weapon"): {["weapon","binocular"]}; + default {["unknown","unknown"]}; + }; + }; + + case (_type == 2^16): {["weapon","vehicle"]}; + case (_type == 2^17): {["item","unknown"]}; // ??? + default {["item","unknown"]}; +}; diff --git a/addons/common/functions/fnc_getItemTypeWeapon.sqf b/addons/common/functions/fnc_getItemTypeWeapon.sqf deleted file mode 100644 index 36b0f6d6d8..0000000000 --- a/addons/common/functions/fnc_getItemTypeWeapon.sqf +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Author: commy2 - * - * What kind of item is given classname. Has to be a CfgWeapons. Undefined behavior for CfgMagazine. - * - * Argument: - * 0: Classname of a CfgWeapon. (String) - * - * Return value: - * See ace_common_fnc_getItemType - * - */ -#include "script_component.hpp" - -private "_item"; - -_item = _this select 0; - -private "_config"; -_config = configFile >> [_item] call FUNC(getConfigType) >> _item; - -if (!isClass _config) exitWith {["",""]}; - -private "_type"; -_type = getNumber (_config >> "type"); - -if (isNumber (_config >> "ItemInfo" >> "type")) then { - _type = getNumber (_config >> "ItemInfo" >> "type"); -}; - -switch (true) do { - case (_type == 0): {["unknown","unknown"]}; - case (_type == 2^0): {["weapon","primary"]}; - case (_type == 2^1): {["weapon","handgun"]}; - case (_type == 2^2): {["weapon","secondary"]}; - case (_type < 2^4): {["weapon","unknown"]}; - case (_type == 2^4): {["magazine","handgun"]}; // handgun - case (_type == 2^8): {["magazine","primary"]}; // rifle - case (_type == 2^9): {["magazine","secondary"]}; // rpg, mg, mines - case (_type == 768): {["magazine","secondary"]}; // NLAW - case (_type == 1536): {["magazine","secondary"]}; // titan - - case (_type == 101): {["item","muzzle"]}; - case (_type == 201): {["item","optics"]}; - case (_type == 301): {["item","flashlight"]}; - case (_type == 302): {["item","under"]}; // czech for bipod item - case (_type == 401): {["item","first_aid_kit"]}; - case (_type == 501): {["item","fins"]}; // not implemented - case (_type == 601): {["item","breathing_bomb"]}; // not implemented - case (_type == 603): {["item","goggles"]}; - case (_type == 604): {["item","scuba"]}; // not implemented - case (_type == 605): {["item","headgear"]}; - case (_type == 611): {["item","radio"]}; - case (_type == 616): {["item","hmd"]}; - case (_type == 617): {["item","binocular"]}; - case (_type == 619): {["item","medikit"]}; - case (_type == 620): {["item","toolkit"]}; - case (_type == 621): {["item","uav_terminal"]}; - case (_type == 701): {["item","vest"]}; - case (_type == 801): {["item","uniform"]}; - - case (_type == 2^12): { - switch (toLower getText (_config >> "simulation")) do { - case ("binocular"): {["weapon","binocular"]}; - case ("nvgoggles"): {["item","nvgoggles"]}; - case ("itemminedetector"): {["item","minedetector"]}; - default {["weapon","unknown"]}; - }; - }; - - case (_type == 2^16): {["weapon","vehicle"]}; - case (_type == 2^17): {["item","unknown"]}; // ??? - default {["item","unknown"]}; -};