ACE3/addons/magazinerepack/functions/fnc_getMagazineChildren.sqf

57 lines
1.8 KiB
Plaintext
Raw Normal View History

2015-04-01 18:09:22 +00:00
/*
* Author: PabstMirror,commy2, esteldunedain, Ruthberg
* Gets magazine children for interaciton menu
*
* Argument:
* 0: Target <OBJECT>
* 1: Player <OBJECT>
*
* Return value:
2015-08-15 22:30:24 +00:00
* ChildActions <ARRAY>
2015-04-01 18:09:22 +00:00
*
* Example:
* [player, player] call ace_magazinerepack_fnc_getMagazineChildren
*
* Public: No
*/
#include "script_component.hpp"
2015-08-15 22:30:24 +00:00
private ["_unitMagazines", "_unitMagCounts", "_index", "_actions", "_displayName", "_picture", "_action"];
2015-04-02 04:05:41 +00:00
2015-08-15 22:30:24 +00:00
params ["_target", "_player"];
2015-04-01 18:09:22 +00:00
// get all mags and ammo count
_unitMagazines = [];
_unitMagCounts = [];
{
2015-08-15 22:30:24 +00:00
private "_xFullMagazineCount";
_x params ["_xClassname", "_xCount", "_xLoaded", "_xType"];
2015-11-30 16:23:02 +00:00
_xFullMagazineCount = getNumber (configFile >> "CfgMagazines" >> _xClassname >> "count");
2015-04-01 18:09:22 +00:00
//for every partial magazine, that is either in inventory or can be moved there
2015-04-18 03:40:37 +00:00
if ((_xCount < _xFullMagazineCount) && {_xCount > 0} && {(!_xLoaded) || {_player canAdd _xClassname}}) then {
2015-04-01 18:09:22 +00:00
_index = _unitMagazines find _xClassname;
if (_index == -1) then {
_unitMagazines pushBack _xClassname;
_unitMagCounts pushBack [_xCount];
} else {
(_unitMagCounts select _index) pushBack _xCount;
};
};
} forEach (magazinesAmmoFull _player);
//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)}, {true}, {}, _x] call EFUNC(interact_menu,createAction);
2015-04-01 18:09:22 +00:00
_actions pushBack [_action, [], _player];
};
} forEach _unitMagazines;
_actions