This commit is contained in:
PabstMirror 2015-04-01 13:09:22 -05:00
parent 0d27806571
commit 1303f59cd8
2 changed files with 57 additions and 3 deletions

View File

@ -6,11 +6,9 @@ class CfgVehicles {
displayName = "$STR_ACE_MagazineRepack_RepackMagazines";
condition = QUOTE(true);
exceptions[] = {"isNotInside"};
statement = QUOTE([_player] call FUNC(openSelectMagazineUI));
showDisabled = 0;
insertChildren = QUOTE(_this call FUNC(getMagazineChildren));
priority = -2;
icon = QUOTE(PATHTOF(UI\repack_ca.paa));
hotkey = "R";
};
};
};

View File

@ -0,0 +1,56 @@
/*
* Author: PabstMirror,commy2, esteldunedain, Ruthberg
* Gets magazine children for interaciton menu
*
* Argument:
* 0: Target <OBJECT>
* 1: Player <OBJECT>
*
* Return value:
* ChildActiosn<ARRAY>
*
* Example:
* [player, player] call ace_magazinerepack_fnc_getMagazineChildren
*
* Public: No
*/
#include "script_component.hpp"
PARAMS_2(_target,_player);
// get all mags and ammo count
_unitMagazines = [];
_unitMagCounts = [];
{
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 _player);
_childCondition = {
PARAMS_2(_target,_player,_classname);
(_classname in (magazines _player)) && {[_player, _player, ["isNotInside"]] call EFUNC(common,canInteractWith)};
};
//Create the action children for all appropriate magazines
_actions = [];
{
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");
_action = [_x, _displayName, _picture, {_this call FUNC(startRepackingMagazine)}, _childCondition, {}, _x] call EFUNC(interact_menu,createAction);
_actions pushBack [_action, [], _player];
};
} forEach _unitMagazines;
_actions