From 0d278065713fa0f2a7151a096b98c5082d0a4ed3 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 1 Apr 2015 13:09:03 -0500 Subject: [PATCH] Repack Mag Child Actions --- addons/magazinerepack/XEH_preInit.sqf | 1 + .../functions/fnc_openSelectMagazineUI.sqf | 58 ------------------- .../functions/fnc_startRepackingMagazine.sqf | 14 ++--- 3 files changed, 7 insertions(+), 66 deletions(-) delete mode 100644 addons/magazinerepack/functions/fnc_openSelectMagazineUI.sqf diff --git a/addons/magazinerepack/XEH_preInit.sqf b/addons/magazinerepack/XEH_preInit.sqf index 7cd7107f54..6274689725 100644 --- a/addons/magazinerepack/XEH_preInit.sqf +++ b/addons/magazinerepack/XEH_preInit.sqf @@ -2,6 +2,7 @@ ADDON = false; +PREP(getMagazineChildren); PREP(magazineRepackFinish); PREP(magazineRepackProgress); PREP(openSelectMagazineUI); diff --git a/addons/magazinerepack/functions/fnc_openSelectMagazineUI.sqf b/addons/magazinerepack/functions/fnc_openSelectMagazineUI.sqf deleted file mode 100644 index fc183faa5b..0000000000 --- a/addons/magazinerepack/functions/fnc_openSelectMagazineUI.sqf +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Author: PabstMirror (based on repack from commy2, esteldunedain, Ruthberg) - * Opens the selectMenu UI to chose which magazine to repack. - * Only shows classnames that have 2+ partial magazines - * - * Arguments: - * 0: Unit (player) - * - * Return Value: - * Nothing - * - * Example: - * [_player] call ace_magazinerepack_fnc_openSelectMagazineUI - * - * Public: No - */ -#include "script_component.hpp" - -private ["_unitMagazines", "_unitMagCounts", "_xFullMagazineCount", "_index", "_actions", "_displayName", "_picture"]; - -PARAMS_1(_unit); - -_unitMagazines = []; -_unitMagCounts = []; - -// get all mags and ammo count -{ - EXPLODE_2_PVT(_x,_xClassname,_xCount); - _xFullMagazineCount = getNumber (configfile >> "CfgMagazines" >> _xClassname >> "count"); - - if ((_xCount != _xFullMagazineCount) && {_xCount > 0}) then {//for every partial magazine - _index = _unitMagazines find _xClassname; - if (_index == -1) then { - _unitMagazines pushBack _xClassname; - _unitMagCounts pushBack [_xCount]; - } else { - (_unitMagCounts select _index) pushBack _xCount; - }; - }; -} forEach (magazinesAmmoFull _unit); - -_actions = [localize "STR_ACE_MagazineRepack_SelectMagazineMenu", localize "STR_ACE_MagazineRepack_SelectMagazine"] call EFUNC(interaction,prepareSelectMenu); - -{ - if ((count (_unitMagCounts select _forEachIndex)) >= 2) then {// Ignore invalid magazines types (need 2+ partial mags to do anything) - _displayName = getText (configFile >> "CfgMagazines" >> _x >> "displayName"); - _picture = getText (configFile >> "CfgMagazines" >> _x >> "picture"); - _actions = [_actions, _displayName, _picture, _x] call EFUNC(interaction,addSelectableItem); - }; -} forEach _unitMagazines; - -[ -_actions, -{ [_this] call FUNC(startRepackingMagazine); }, -{ - call EFUNC(interaction,hideMenu); //ToDo: Self Interaction Integration -} -] call EFUNC(interaction,openSelectMenu); diff --git a/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf index 233546e799..7b66dd60a7 100644 --- a/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf +++ b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf @@ -5,7 +5,9 @@ * Precalcs all the event timings and starts the progressBar. * * Arguments: - * 0: Magazine Classname + * 0: Target + * 1: Player + * 2: Magazine Classname * * Return Value: * Nothing @@ -17,23 +19,19 @@ */ #include "script_component.hpp" -private ["_player", "_fullMagazineCount", "_startingAmmoCounts", "_simEvents", "_totalTime", "_magazineCfg"]; +private ["_fullMagazineCount", "_startingAmmoCounts", "_simEvents", "_totalTime", "_magazineCfg"]; + +PARAMS_2(_target,_player,_magazineClassname); -PARAMS_1(_magazineClassname); if (isNil "_magazineClassname" || {_magazineClassname == ""}) exitWith {ERROR("Bad Mag Classname");}; - _magazineCfg = configfile >> "CfgMagazines" >> _magazineClassname; // Calculate actual ammo to transfer during repack _fullMagazineCount = getNumber (_magazineCfg >> "count"); //Is linked belt magazine: _isBelt = (isNumber (_magazineCfg >> "ACE_isBelt")) && {(getNumber (_magazineCfg >> "ACE_isBelt")) == 1}; - -_player = ACE_player; - [_player] call EFUNC(common,goKneeling); - _startingAmmoCounts = []; { EXPLODE_4_PVT(_x,_xClassname,_xCount,_xLoaded,_xType);