diff --git a/addons/disposable/XEH_preInit.sqf b/addons/disposable/XEH_preInit.sqf index 8a6a0ce61..a95996f33 100644 --- a/addons/disposable/XEH_preInit.sqf +++ b/addons/disposable/XEH_preInit.sqf @@ -25,19 +25,21 @@ if (configProperties [configFile >> "CBA_DisposableLaunchers"] isEqualTo []) exi _unit call FUNC(changeDisposableLauncherClass); }] call CBA_fnc_addClassEventHandler; -GVAR(NormalLaunchers) = [] call CBA_fnc_createNamespace; -GVAR(LoadedLaunchers) = [] call CBA_fnc_createNamespace; -GVAR(UsedLaunchers) = [] call CBA_fnc_createNamespace; +GVAR(NormalLaunchers) = createHashMap; +GVAR(LoadedLaunchers) = createHashMap; +GVAR(UsedLaunchers) = createHashMap; GVAR(magazines) = []; GVAR(allowedSlotsLaunchers) = createHashMap; -GVAR(MagazineLaunchers) = [] call CBA_fnc_createNamespace; +GVAR(MagazineLaunchers) = createHashMap; private _cfgWeapons = configFile >> "CfgWeapons"; private _cfgMagazines = configFile >> "CfgMagazines"; { - private _launcher = configName _x; - private _magazine = configName (_cfgMagazines >> (getArray (_cfgWeapons >> _launcher >> "magazines") select 0)); + // Get case-sensitive config names + private _configLauncher = _cfgWeapons >> configName _x; + private _launcher = configName _configLauncher; + private _magazine = (compatibleMagazines _launcher) select 0; if (_magazine == "") then { ERROR_1("Launcher %1 has an undefined magazine.",_launcher); @@ -62,21 +64,18 @@ private _cfgMagazines = configFile >> "CfgMagazines"; private _configLoadedLauncher = _cfgWeapons >> _loadedLauncher; _loadedLauncher = configName _configLoadedLauncher; - GVAR(LoadedLaunchers) setVariable [_launcher, _loadedLauncher]; - GVAR(UsedLaunchers) setVariable [_launcher, _usedLauncher]; - - if (isNil {GVAR(NormalLaunchers) getVariable _loadedLauncher}) then { - GVAR(NormalLaunchers) setVariable [_loadedLauncher, [_launcher, _magazine]]; - }; + GVAR(LoadedLaunchers) set [_launcher, _loadedLauncher]; + GVAR(UsedLaunchers) set [_launcher, _usedLauncher]; + GVAR(NormalLaunchers) set [_loadedLauncher, [_launcher, _magazine], true]; // insert-only if (GVAR(magazines) pushBackUnique _magazine != -1) then { - GVAR(MagazineLaunchers) setVariable [_magazine, _loadedLauncher]; + GVAR(MagazineLaunchers) set [_magazine, _loadedLauncher]; }; GVAR(allowedSlotsLaunchers) set [_loadedLauncher, getArray (_configLoadedLauncher >> "WeaponSlotsInfo" >> "allowedSlots")]; // check if mass entries add up - private _massLauncher = getNumber (_cfgWeapons >> _launcher >> "WeaponSlotsInfo" >> "mass"); + private _massLauncher = getNumber (_configLauncher >> "WeaponSlotsInfo" >> "mass"); private _massMagazine = getNumber (_cfgMagazines >> _magazine >> "mass"); private _massLoadedLauncher = getNumber (_configLoadedLauncher >> "WeaponSlotsInfo" >> "mass"); private _massUsedLauncher = getNumber (_cfgWeapons >> _usedLauncher >> "WeaponSlotsInfo" >> "mass"); diff --git a/addons/disposable/fnc_changeDisposableLauncherClass.sqf b/addons/disposable/fnc_changeDisposableLauncherClass.sqf index 5e7eb1b69..c07ca9b8d 100644 --- a/addons/disposable/fnc_changeDisposableLauncherClass.sqf +++ b/addons/disposable/fnc_changeDisposableLauncherClass.sqf @@ -23,7 +23,7 @@ Author: params ["_unit"]; if (!local _unit) exitWith {}; -private _launcher = GVAR(NormalLaunchers) getVariable secondaryWeapon _unit; +private _launcher = GVAR(NormalLaunchers) get secondaryWeapon _unit; if (!isNil "_launcher") then { _launcher params ["_launcher", "_magazine"]; diff --git a/addons/disposable/fnc_firedDisposable.sqf b/addons/disposable/fnc_firedDisposable.sqf index f612358dc..25a5cd0ea 100644 --- a/addons/disposable/fnc_firedDisposable.sqf +++ b/addons/disposable/fnc_firedDisposable.sqf @@ -33,7 +33,7 @@ if (!GVAR(replaceDisposableLauncher)) exitWith {}; params ["_unit", "_launcher", "_muzzle", "", "", "", "_projectile"]; -private _usedLauncher = GVAR(UsedLaunchers) getVariable _launcher; +private _usedLauncher = GVAR(UsedLaunchers) get _launcher; if (isNil "_usedLauncher") exitWith {}; [{ diff --git a/addons/disposable/fnc_initDisplayInventory.sqf b/addons/disposable/fnc_initDisplayInventory.sqf index 6a856f0ae..48e19ac55 100644 --- a/addons/disposable/fnc_initDisplayInventory.sqf +++ b/addons/disposable/fnc_initDisplayInventory.sqf @@ -6,7 +6,7 @@ private _fnc_update = { params ["_display"]; private _control = _display displayCtrl IDC_FG_SW_MAGAZINE; - _control ctrlEnable (!GVAR(replaceDisposableLauncher) || {isNil {GVAR(LoadedLaunchers) getVariable secondaryWeapon call CBA_fnc_currentUnit}}); + _control ctrlEnable (!GVAR(replaceDisposableLauncher) || {!((secondaryWeapon call CBA_fnc_currentUnit) in GVAR(LoadedLaunchers))}); }; _display displayAddEventHandler ["MouseMoving", _fnc_update]; diff --git a/addons/disposable/fnc_replaceMagazineCargo.sqf b/addons/disposable/fnc_replaceMagazineCargo.sqf index e5f6fb074..e1669b518 100644 --- a/addons/disposable/fnc_replaceMagazineCargo.sqf +++ b/addons/disposable/fnc_replaceMagazineCargo.sqf @@ -59,7 +59,7 @@ _containerType = if (getNumber (configOf _container >> "isBackpack") == 1) then { _container addMagazineCargoGlobal [_x, -1]; - private _loadedLauncher = GVAR(MagazineLaunchers) getVariable _x; + private _loadedLauncher = GVAR(MagazineLaunchers) get _x; // Slot restrictions only apply if uniform, vest or backpack // If slot restrictions apply, remove magazine but don't add weapon