ACE3/addons/cargo/functions/fnc_canLoadItemIn.sqf

46 lines
1.4 KiB
Plaintext
Raw Normal View History

#include "script_component.hpp"
2015-08-10 21:07:47 +00:00
/*
* Author: Glowbal
2015-08-16 20:41:35 +00:00
* Check if item can be loaded into other Object.
2015-08-10 21:07:47 +00:00
*
* Arguments:
* 0: Item <OBJECT or STRING>
2015-08-16 20:41:35 +00:00
* 1: Holder Object (Vehicle) <OBJECT>
* 2: Ignore interaction distance and stability checks <BOOL>
2015-08-10 21:07:47 +00:00
*
2016-06-18 09:50:41 +00:00
* Return Value:
2015-08-10 21:07:47 +00:00
* Can load in <BOOL>
*
2015-08-16 20:41:35 +00:00
* Example:
* [item, holder] call ace_cargo_fnc_canLoadItemIn
*
2015-08-10 21:07:47 +00:00
* Public: No
*/
params [["_item", "", [objNull,""]], "_vehicle", ["_ignoreInteraction", false]];
2015-08-10 21:07:47 +00:00
if ((!_ignoreInteraction) && {speed _vehicle > 1 || {((getPos _vehicle) select 2) > 3}}) exitWith {TRACE_1("vehicle not stable",_vehicle); false};
if (_item isEqualType objNull && {{alive _x && {getText (configFile >> "CfgVehicles" >> typeOf _x >> "simulation") != "UAVPilot"}} count crew _item > 0}) exitWith {
TRACE_1("item is occupied",_item);
false
};
2016-01-19 03:53:48 +00:00
private _itemSize = [_item] call FUNC(getSizeItem);
private _validItem = false;
if (_item isEqualType "") then {
_validItem =
isClass (configFile >> "CfgVehicles" >> _item) &&
{getNumber (configFile >> "CfgVehicles" >> _item >> QGVAR(canLoad)) == 1};
} else {
_validItem =
(alive _item) &&
{_ignoreInteraction || {([_item, _vehicle] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE}};
};
_validItem &&
{_itemSize > 0} &&
{alive _vehicle} &&
{_itemSize <= ([_vehicle] call FUNC(getCargoSpaceLeft))} &&
{locked _vehicle < 2}