2023-09-12 18:58:10 +00:00
|
|
|
#include "..\script_component.hpp"
|
2015-04-01 18:09:22 +00:00
|
|
|
/*
|
2016-06-04 18:40:55 +00:00
|
|
|
* Author: PabstMirror, commy2, esteldunedain, Ruthberg
|
2024-08-20 22:24:58 +00:00
|
|
|
* Gets magazine children for interaction menu.
|
2015-04-01 18:09:22 +00:00
|
|
|
*
|
2016-06-18 09:50:41 +00:00
|
|
|
* Arguments:
|
2015-04-01 18:09:22 +00:00
|
|
|
* 0: Target <OBJECT>
|
|
|
|
* 1: Player <OBJECT>
|
|
|
|
*
|
2016-06-18 09:50:41 +00:00
|
|
|
* 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
|
|
|
|
*/
|
|
|
|
|
2015-08-15 22:30:24 +00:00
|
|
|
params ["_target", "_player"];
|
2015-04-01 18:09:22 +00:00
|
|
|
|
2024-08-20 22:24:58 +00:00
|
|
|
private _cfgMagazines = configFile >> "CfgMagazines";
|
|
|
|
|
2015-04-01 18:09:22 +00:00
|
|
|
// get all mags and ammo count
|
2016-06-04 18:40:55 +00:00
|
|
|
private _unitMagazines = [];
|
|
|
|
private _unitMagCounts = [];
|
2015-04-01 18:09:22 +00:00
|
|
|
{
|
2015-08-15 22:30:24 +00:00
|
|
|
_x params ["_xClassname", "_xCount", "_xLoaded", "_xType"];
|
|
|
|
|
2024-08-20 22:24:58 +00:00
|
|
|
private _configMagazine = _cfgMagazines >> _xClassname;
|
|
|
|
private _xFullMagazineCount = getNumber (_configMagazine >> "count");
|
|
|
|
private _isRepackDisabled = getNumber (_configMagazine >> "ace_disableRepacking") == 1;
|
2015-04-01 18:09:22 +00:00
|
|
|
|
2015-04-04 03:37:48 +00:00
|
|
|
//for every partial magazine, that is either in inventory or can be moved there
|
2024-08-20 22:24:58 +00:00
|
|
|
if ((!_isRepackDisabled) && {_xCount < _xFullMagazineCount} && {_xCount > 0} && {(!_xLoaded) || {GVAR(repackLoadedMagazines) && {[_player, _xClassname] call CBA_fnc_canAddItem}}}) then {
|
2016-06-04 18:40:55 +00:00
|
|
|
private _index = _unitMagazines find _xClassname;
|
2015-04-01 18:09:22 +00:00
|
|
|
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
|
2016-06-04 18:40:55 +00:00
|
|
|
private _actions = [];
|
2015-04-01 18:09:22 +00:00
|
|
|
{
|
|
|
|
if ((count (_unitMagCounts select _forEachIndex)) >= 2) then {// Ignore invalid magazines types (need 2+ partial mags to do anything)
|
2016-06-04 18:40:55 +00:00
|
|
|
private _displayName = getText (configFile >> "CfgMagazines" >> _x >> "displayName");
|
|
|
|
private _picture = getText (configFile >> "CfgMagazines" >> _x >> "picture");
|
2015-04-01 18:09:22 +00:00
|
|
|
|
2016-06-04 18:40:55 +00:00
|
|
|
private _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
|