mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
69c3d2bb65
* Add Weapon Attachments interaction * Apply recommended changes * Format addPEH Co-authored-by: mharis001 <34453221+mharis001@users.noreply.github.com> * Remove toLower * Update required CBA version * Rename category to Accessories * Change setting var name * Add setting description * Fix notification size * Optimize with new commands Co-authored-by: mharis001 <34453221+mharis001@users.noreply.github.com>
69 lines
2.2 KiB
Plaintext
69 lines
2.2 KiB
Plaintext
#include "script_component.hpp"
|
|
/*
|
|
* Author: mharis001, Dystopian
|
|
* Returns children actions for weapon attachment switching.
|
|
*
|
|
* Arguments:
|
|
* 0: Unit <OBJECT>
|
|
*
|
|
* Return Value:
|
|
* Actions <ARRAY>
|
|
*
|
|
* Example:
|
|
* player call ace_interaction_fnc_getWeaponAttachmentsActions
|
|
*
|
|
* Public: No
|
|
*/
|
|
|
|
params ["_unit"];
|
|
|
|
[_unit, {
|
|
params ["_unit"];
|
|
|
|
private _currentWeapon = currentWeapon _unit;
|
|
if (_currentWeapon isEqualTo "") exitWith {[]};
|
|
private _weaponItems = _unit weaponAccessories _currentWeapon;
|
|
private _cfgWeapons = configFile >> "CfgWeapons";
|
|
private _actions = [];
|
|
|
|
// "attach" actions
|
|
private _items = _unit call EFUNC(common,uniqueItems);
|
|
private _compatibleItems = _currentWeapon call CBA_fnc_compatibleItems;
|
|
{
|
|
private _config = _cfgWeapons >> _x;
|
|
private _name = format [LLSTRING(weaponAttachmentsAttach), getText (_config >> "displayName")];
|
|
private _picture = getText (_config >> "picture");
|
|
private _type = getNumber (_config >> "itemInfo" >> "type");
|
|
private _oldAttachment = _weaponItems select ([TYPE_MUZZLE, TYPE_FLASHLIGHT, TYPE_OPTICS, TYPE_BIPOD] find _type);
|
|
|
|
private _action = [
|
|
_x, _name, _picture,
|
|
LINKFUNC(switchWeaponAttachment),
|
|
{true},
|
|
{},
|
|
[_currentWeapon, _x, _oldAttachment]
|
|
] call EFUNC(interact_menu,createAction);
|
|
_actions pushBack [_action, [], _unit];
|
|
} forEach ((_items arrayIntersect _compatibleItems) - _weaponItems);
|
|
|
|
// "detach" actions
|
|
{
|
|
if (_x isEqualTo "") then {continue};
|
|
|
|
private _config = _cfgWeapons >> _x;
|
|
private _name = format [LLSTRING(weaponAttachmentsDetach), getText (_config >> "displayName")];
|
|
private _picture = getText (_config >> "picture");
|
|
|
|
private _action = [
|
|
_x, _name, _picture,
|
|
LINKFUNC(switchWeaponAttachment),
|
|
{true},
|
|
{},
|
|
[_currentWeapon, "", _x]
|
|
] call EFUNC(interact_menu,createAction);
|
|
_actions pushBack [_action, [], _unit];
|
|
} forEach _weaponItems;
|
|
|
|
_actions
|
|
}, _unit, QGVAR(weaponAttachmentsActions), 5, QGVAR(clearWeaponAttachmentsActionsCache)] call EFUNC(common,cachedCall);
|