Skip to content

Commit

Permalink
fix CBA_fnc_compatibleMagazines skipping muzzle magazines (#1122)
Browse files Browse the repository at this point in the history
  • Loading branch information
commy2 committed Apr 22, 2019
1 parent 4cc2646 commit da4da78
Showing 1 changed file with 37 additions and 15 deletions.
52 changes: 37 additions & 15 deletions addons/common/fnc_compatibleMagazines.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -29,27 +29,49 @@ if (_weapon isEqualType "") then {
};

private _cacheKey = str _weapon;
if (_cacheKey == "") exitWith { ERROR_1("Weapon Does Not Exist %1",_this); [] };

if (isNil QGVAR(magNamespace)) then { GVAR(magNamespace) = call CBA_fnc_createNamespace; };
if (_cacheKey == "") exitWith {
ERROR_1("Weapon Does Not Exist %1",_this);
[]
};

private _returnMags = GVAR(magNamespace) getVariable _cacheKey;
if (isNil QGVAR(magNamespace)) then {
GVAR(magNamespace) = call CBA_fnc_createNamespace;
};

private _compatibleMagazines = GVAR(magNamespace) getVariable _cacheKey;

if (isNil "_compatibleMagazines") then {
_compatibleMagazines = [];

private _fnc_appendMagazines = {
params ["_muzzle"];

_compatibleMagazines append getArray (_muzzle >> "magazines");

if (isNil "_returnMags") then {
_returnMags = getArray (_weapon >> "magazines");
{
private _wellConfig = configFile >> "CfgMagazineWells" >> _x;
{
_returnMags append getArray _x;
} forEach configProperties [_wellConfig, "isArray _x", false];
} forEach (getArray (_weapon >> "magazineWell"));
private _wellConfig = configFile >> "CfgMagazineWells" >> _x;

{
_compatibleMagazines append getArray _x;
} forEach configProperties [_wellConfig, "isArray _x", false];
} forEach getArray (_muzzle >> "magazineWell");
};

{
if (_x == "this") then {
_weapon call _fnc_appendMagazines;
} else {
(_weapon >> _x) call _fnc_appendMagazines
};
} forEach getArray (_weapon >> "muzzles");

private _cfgMagazines = configFile >> "CfgMagazines";
_returnMags = _returnMags select {isClass (_cfgMagazines >> _x)};
_returnMags = _returnMags apply {configName (_cfgMagazines >> _x)};
_returnMags = _returnMags arrayIntersect _returnMags;
_compatibleMagazines = _compatibleMagazines select {isClass (_cfgMagazines >> _x)};
_compatibleMagazines = _compatibleMagazines apply {configName (_cfgMagazines >> _x)};
_compatibleMagazines = _compatibleMagazines arrayIntersect _compatibleMagazines;

GVAR(magNamespace) setVariable [_cacheKey, _returnMags];
GVAR(magNamespace) setVariable [_cacheKey, _compatibleMagazines];
};

+_returnMags
+_compatibleMagazines

0 comments on commit da4da78

Please sign in to comment.