From c21e24eafeb4f6974019d988ad91fe71f07abf24 Mon Sep 17 00:00:00 2001 From: johnb432 <58661205+johnb432@users.noreply.github.com> Date: Tue, 11 Jul 2023 07:17:26 +0200 Subject: [PATCH 1/5] Update fnc_compatibleMagazines.sqf --- addons/common/fnc_compatibleMagazines.sqf | 46 ++++++++++++----------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/addons/common/fnc_compatibleMagazines.sqf b/addons/common/fnc_compatibleMagazines.sqf index da42fe5a14..919a9a27bb 100644 --- a/addons/common/fnc_compatibleMagazines.sqf +++ b/addons/common/fnc_compatibleMagazines.sqf @@ -19,7 +19,7 @@ Returns: Array of magazine classnames in config capitalization Author: - PabstMirror, based on code from Dedmen + PabstMirror, johnb43, based on code from Dedmen ---------------------------------------------------------------------------- */ SCRIPT(compatibleMagazines); @@ -29,37 +29,39 @@ if (_weapon isEqualType "") then { _weapon = configFile >> "CfgWeapons" >> _weapon; }; -private _cacheKey = format ["%1#%2",_weapon,_allMuzzles]; -if (isNil QGVAR(magNamespace)) then { GVAR(magNamespace) = call CBA_fnc_createNamespace; }; - -private _returnMags = GVAR(magNamespace) getVariable _cacheKey; +if (isNil QGVAR(magNamespace)) then { + GVAR(magNamespace) = createHashMap; +}; -if (isNil "_returnMags") then { ++(GVAR(magNamespace) getOrDefaultCall [format ["%1#%2", _weapon, _allMuzzles], { if (_allMuzzles) then { - _returnMags = []; // get all mags from all muzzles + // Get all mags from all muzzles + private _returnMags = createHashMap; + { if (_x == "this") then { - _returnMags append (_weapon call CBA_fnc_compatibleMagazines); + _returnMags insert [true, _weapon call CBA_fnc_compatibleMagazines, []]; } else { - _returnMags append ((_weapon >> _x) call CBA_fnc_compatibleMagazines); + _returnMags insert [true, (_weapon >> _x) call CBA_fnc_compatibleMagazines, []]; }; } forEach getArray (_weapon >> "muzzles"); - _returnMags = _returnMags arrayIntersect _returnMags; + + keys _returnMags } else { - _returnMags = getArray (_weapon >> "magazines"); // get mags just for a specific muzzle + // Get mags just for a specific muzzle + private _cfgMagazines = configFile >> "CfgMagazines"; + private _cfgMagazineWells = configFile >> "CfgMagazineWells"; + private _returnMags = getArray (_weapon >> "magazines") createHashMapFromArray []; + { - private _wellConfig = configFile >> "CfgMagazineWells" >> _x; { - _returnMags append getArray _x; - } forEach configProperties [_wellConfig, "isArray _x", false]; + _returnMags insert [true, (getArray _x) apply {configName (_cfgMagazines >> _x)}, []]; + } forEach configProperties [_cfgMagazineWells >> _x, "isArray _x", false]; } forEach (getArray (_weapon >> "magazineWell")); - private _cfgMagazines = configFile >> "CfgMagazines"; - _returnMags = _returnMags select {isClass (_cfgMagazines >> _x)}; - _returnMags = _returnMags apply {configName (_cfgMagazines >> _x)}; - _returnMags = _returnMags arrayIntersect _returnMags; - }; - GVAR(magNamespace) setVariable [_cacheKey, _returnMags]; -}; + // Delete invalid entry + _returnMags deleteAt ""; -+_returnMags + keys _returnMags + }; +}, true]) From f452f6aad493a36385c7e5f767162529a235a293 Mon Sep 17 00:00:00 2001 From: johnb432 <58661205+johnb432@users.noreply.github.com> Date: Tue, 11 Jul 2023 18:02:46 +0200 Subject: [PATCH 2/5] Update fnc_compatibleMagazines.sqf --- addons/common/fnc_compatibleMagazines.sqf | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/addons/common/fnc_compatibleMagazines.sqf b/addons/common/fnc_compatibleMagazines.sqf index 919a9a27bb..9eee9b02df 100644 --- a/addons/common/fnc_compatibleMagazines.sqf +++ b/addons/common/fnc_compatibleMagazines.sqf @@ -6,18 +6,18 @@ Description: Retrieves a list of magazines that are compatible with a weapon. Parameters: - _weapon - Weapon configName or config - _allMuzzles - Get magazines for all muzzles on this weapon (default: false) + _weapon - Weapon class name or config + _allMuzzles - Get magazines for all muzzles on this weapon (optional, default: false) -Example: +Returns: + Array of magazine classnames in config capitalization + +Examples: (begin example) - _mags = ["arifle_MX_SW_F"] call CBA_fnc_compatibleMagazines - _mags = [configFile >> "CfgWeapons" >> _rifle >> _glMuzzle] call CBA_fnc_compatibleMagazines + _mags = ["arifle_MX_SW_F"] call CBA_fnc_compatibleMagazines; + _mags = [configFile >> "CfgWeapons" >> _rifle >> _glMuzzle] call CBA_fnc_compatibleMagazines; (end) -Returns: - Array of magazine classnames in config capitalization - Author: PabstMirror, johnb43, based on code from Dedmen ---------------------------------------------------------------------------- */ From 2f46187de022e495a0e5ac17e150130a07f22231 Mon Sep 17 00:00:00 2001 From: johnb432 <58661205+johnb432@users.noreply.github.com> Date: Wed, 12 Jul 2023 18:08:08 +0200 Subject: [PATCH 3/5] Update fnc_compatibleMagazines.sqf --- addons/common/fnc_compatibleMagazines.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/common/fnc_compatibleMagazines.sqf b/addons/common/fnc_compatibleMagazines.sqf index 9eee9b02df..be02bfa3a3 100644 --- a/addons/common/fnc_compatibleMagazines.sqf +++ b/addons/common/fnc_compatibleMagazines.sqf @@ -7,7 +7,7 @@ Description: Parameters: _weapon - Weapon class name or config - _allMuzzles - Get magazines for all muzzles on this weapon (optional, default: false) + _allMuzzles - Get magazines for all muzzles on this weapon (optional, default: false) Returns: Array of magazine classnames in config capitalization From dac96519db65d544cc94a1dede4937837967d7c6 Mon Sep 17 00:00:00 2001 From: johnb432 <58661205+johnb432@users.noreply.github.com> Date: Wed, 19 Jul 2023 18:05:39 +0200 Subject: [PATCH 4/5] Reverting most changes --- addons/common/fnc_compatibleMagazines.sqf | 41 ++++++++++++++--------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/addons/common/fnc_compatibleMagazines.sqf b/addons/common/fnc_compatibleMagazines.sqf index be02bfa3a3..95b3aa45be 100644 --- a/addons/common/fnc_compatibleMagazines.sqf +++ b/addons/common/fnc_compatibleMagazines.sqf @@ -19,7 +19,7 @@ Examples: (end) Author: - PabstMirror, johnb43, based on code from Dedmen + PabstMirror, based on code from Dedmen ---------------------------------------------------------------------------- */ SCRIPT(compatibleMagazines); @@ -33,35 +33,46 @@ if (isNil QGVAR(magNamespace)) then { GVAR(magNamespace) = createHashMap; }; -+(GVAR(magNamespace) getOrDefaultCall [format ["%1#%2", _weapon, _allMuzzles], { +private _cacheKey = format ["%1#%2", _weapon, _allMuzzles]; +private _returnMags = GVAR(magNamespace) get _cacheKey; + +if (isNil "_returnMags") then { if (_allMuzzles) then { - // Get all mags from all muzzles - private _returnMags = createHashMap; + // Get all mags from all muzzles + _returnMags = []; { if (_x == "this") then { - _returnMags insert [true, _weapon call CBA_fnc_compatibleMagazines, []]; + _returnMags append (_weapon call CBA_fnc_compatibleMagazines); } else { - _returnMags insert [true, (_weapon >> _x) call CBA_fnc_compatibleMagazines, []]; + _returnMags append ((_weapon >> _x) call CBA_fnc_compatibleMagazines); }; } forEach getArray (_weapon >> "muzzles"); - keys _returnMags + _returnMags = _returnMags arrayIntersect _returnMags; } else { // Get mags just for a specific muzzle private _cfgMagazines = configFile >> "CfgMagazines"; private _cfgMagazineWells = configFile >> "CfgMagazineWells"; - private _returnMags = getArray (_weapon >> "magazines") createHashMapFromArray []; + + _returnMags = getArray (_weapon >> "magazines"); + + private _wellConfig = configNull; { + _wellConfig = _cfgMagazineWells >> _x; + { - _returnMags insert [true, (getArray _x) apply {configName (_cfgMagazines >> _x)}, []]; - } forEach configProperties [_cfgMagazineWells >> _x, "isArray _x", false]; + _returnMags append getArray _x; + } forEach configProperties [_wellConfig, "isArray _x", false]; } forEach (getArray (_weapon >> "magazineWell")); - // Delete invalid entry - _returnMags deleteAt ""; - - keys _returnMags + _returnMags = _returnMags select {isClass (_cfgMagazines >> _x)}; + _returnMags = _returnMags apply {configName (_cfgMagazines >> _x)}; + _returnMags = _returnMags arrayIntersect _returnMags; }; -}, true]) + + GVAR(magNamespace) set [_cacheKey, _returnMags]; +}; + ++_returnMags From 50c0a972055cf5fd9b11a88c448d051abc436c75 Mon Sep 17 00:00:00 2001 From: johnb432 <58661205+johnb432@users.noreply.github.com> Date: Thu, 20 Jul 2023 17:34:26 +0200 Subject: [PATCH 5/5] Update fnc_compatibleMagazines.sqf --- addons/common/fnc_compatibleMagazines.sqf | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/common/fnc_compatibleMagazines.sqf b/addons/common/fnc_compatibleMagazines.sqf index 95b3aa45be..b0276940d6 100644 --- a/addons/common/fnc_compatibleMagazines.sqf +++ b/addons/common/fnc_compatibleMagazines.sqf @@ -57,10 +57,8 @@ if (isNil "_returnMags") then { _returnMags = getArray (_weapon >> "magazines"); - private _wellConfig = configNull; - { - _wellConfig = _cfgMagazineWells >> _x; + private _wellConfig = _cfgMagazineWells >> _x; { _returnMags append getArray _x;