From 0c6a1e58e538201477c7823527f53d0b66a8dfcc Mon Sep 17 00:00:00 2001 From: johnb432 <58661205+johnb432@users.noreply.github.com> Date: Sat, 4 May 2024 16:26:03 +0200 Subject: [PATCH 1/4] Use native hashmaps for disposables --- addons/disposable/XEH_preInit.sqf | 19 ++++++++----------- .../fnc_changeDisposableLauncherClass.sqf | 2 +- addons/disposable/fnc_firedDisposable.sqf | 2 +- .../disposable/fnc_initDisplayInventory.sqf | 2 +- .../disposable/fnc_replaceMagazineCargo.sqf | 2 +- 5 files changed, 12 insertions(+), 15 deletions(-) diff --git a/addons/disposable/XEH_preInit.sqf b/addons/disposable/XEH_preInit.sqf index fd5954f112..d175d6a245 100644 --- a/addons/disposable/XEH_preInit.sqf +++ b/addons/disposable/XEH_preInit.sqf @@ -23,12 +23,12 @@ 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(BackpackLaunchers) = createHashMap; -GVAR(MagazineLaunchers) = [] call CBA_fnc_createNamespace; +GVAR(MagazineLaunchers) = createHashMap; private _cfgWeapons = configFile >> "CfgWeapons"; private _cfgMagazines = configFile >> "CfgMagazines"; @@ -39,15 +39,12 @@ private _cfgMagazines = configFile >> "CfgMagazines"; getArray _x params ["_loadedLauncher", "_usedLauncher"]; private _fitsInBackpacks = TYPE_BACKPACK in getArray (configFile >> "CfgWeapons" >> _loadedLauncher >> "WeaponSlotsInfo" >> "allowedSlots"); - 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]; }; if (_fitsInBackpacks) then { diff --git a/addons/disposable/fnc_changeDisposableLauncherClass.sqf b/addons/disposable/fnc_changeDisposableLauncherClass.sqf index 5e7eb1b69b..c07ca9b8d0 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 f612358dcd..25a5cd0eac 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 6a856f0ae8..48e19ac551 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 89e3da9e6b..901162929d 100644 --- a/addons/disposable/fnc_replaceMagazineCargo.sqf +++ b/addons/disposable/fnc_replaceMagazineCargo.sqf @@ -56,7 +56,7 @@ private _isBackpack = getNumber (configOf _box >> "isBackpack") != -1; _x params ["_magazine", "_ammo"]; if (_magazine in GVAR(magazines)) then { - private _loadedLauncher = GVAR(MagazineLaunchers) getVariable _magazine; + private _loadedLauncher = GVAR(MagazineLaunchers) get _magazine; if (!_isBackpack || {_loadedLauncher in GVAR(BackpackLaunchers)}) then { _box addWeaponCargoGlobal [_loadedLauncher, 1]; }; From d9ca3770bc02c17d492328d983751c057970080d Mon Sep 17 00:00:00 2001 From: johnb432 <58661205+johnb432@users.noreply.github.com> Date: Sat, 15 Jun 2024 10:07:55 +0200 Subject: [PATCH 2/4] Use config case --- addons/disposable/XEH_preInit.sqf | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/addons/disposable/XEH_preInit.sqf b/addons/disposable/XEH_preInit.sqf index d175d6a245..a024c4bab8 100644 --- a/addons/disposable/XEH_preInit.sqf +++ b/addons/disposable/XEH_preInit.sqf @@ -34,10 +34,15 @@ 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 = configName (_cfgMagazines >> (getArray (_configLauncher >> "magazines") select 0)); getArray _x params ["_loadedLauncher", "_usedLauncher"]; - private _fitsInBackpacks = TYPE_BACKPACK in getArray (configFile >> "CfgWeapons" >> _loadedLauncher >> "WeaponSlotsInfo" >> "allowedSlots"); + + private _configLoadedLauncher = _cfgWeapons >> _loadedLauncher; + _loadedLauncher = configName _configLoadedLauncher; + private _fitsInBackpacks = TYPE_BACKPACK in getArray (_configLoadedLauncher >> "WeaponSlotsInfo" >> "allowedSlots"); GVAR(LoadedLaunchers) set [_launcher, _loadedLauncher]; GVAR(UsedLaunchers) set [_launcher, _usedLauncher]; @@ -52,9 +57,9 @@ private _cfgMagazines = configFile >> "CfgMagazines"; }; // 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 (_cfgWeapons >> _loadedLauncher >> "WeaponSlotsInfo" >> "mass"); + private _massLoadedLauncher = getNumber (_configLoadedLauncher >> "WeaponSlotsInfo" >> "mass"); private _massUsedLauncher = getNumber (_cfgWeapons >> _usedLauncher >> "WeaponSlotsInfo" >> "mass"); if (_massLauncher != _massUsedLauncher) then { From 32bdb34a14c9eecf78c6c2e454e6b4ef4867bd8a Mon Sep 17 00:00:00 2001 From: johnb432 <58661205+johnb432@users.noreply.github.com> Date: Fri, 9 Aug 2024 01:39:21 -0700 Subject: [PATCH 3/4] Update addons/disposable/XEH_preInit.sqf Co-authored-by: PabstMirror --- addons/disposable/XEH_preInit.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/disposable/XEH_preInit.sqf b/addons/disposable/XEH_preInit.sqf index 5c42a2107c..6e9b8fdfab 100644 --- a/addons/disposable/XEH_preInit.sqf +++ b/addons/disposable/XEH_preInit.sqf @@ -39,7 +39,7 @@ private _cfgMagazines = configFile >> "CfgMagazines"; // Get case-sensitive config names private _configLauncher = _cfgWeapons >> configName _x; private _launcher = configName _configLauncher; - private _magazine = configName (_cfgMagazines >> (getArray (_configLauncher >> "magazines") select 0)); + private _magazine = (compatibleMagazines (configName _x)) select 0; if (_magazine == "") then { ERROR_1("Launcher %1 has an undefined magazine.",_launcher); From 792616e291bec464944b48234295eb0c8f0d9e6f Mon Sep 17 00:00:00 2001 From: johnb432 <58661205+johnb432@users.noreply.github.com> Date: Fri, 9 Aug 2024 10:42:23 +0200 Subject: [PATCH 4/4] Update XEH_preInit.sqf --- addons/disposable/XEH_preInit.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/disposable/XEH_preInit.sqf b/addons/disposable/XEH_preInit.sqf index 6e9b8fdfab..a95996f33c 100644 --- a/addons/disposable/XEH_preInit.sqf +++ b/addons/disposable/XEH_preInit.sqf @@ -39,7 +39,7 @@ private _cfgMagazines = configFile >> "CfgMagazines"; // Get case-sensitive config names private _configLauncher = _cfgWeapons >> configName _x; private _launcher = configName _configLauncher; - private _magazine = (compatibleMagazines (configName _x)) select 0; + private _magazine = (compatibleMagazines _launcher) select 0; if (_magazine == "") then { ERROR_1("Launcher %1 has an undefined magazine.",_launcher);