/*
     Name: AGM_Drag_fnc_GetWeight
     
     Author(s):
        L-H, edited by commy2

     Description:
        Returns the weight of a crate.
    
    Parameters:
        0: OBJECT - Crate to get weight of
     
     Returns:
        NUMBER - Weight
     
     Example:
        _weight = Crate1 call AGM_Drag_fnc_GetWeight;
*/
#include "script_component.hpp"

private "_object";

_object = _this select 0;

private ["_totalWeight", "_fnc","_fnc_Extra"];
_totalWeight = 0;
_fnc_Extra = {
    private ["_weight", "_items"];
    _items = _this select 0;
    _weight = 0;
    {
        _weight = _weight + (getNumber (ConfigFile >> (_this select 1) >> _x >> (_this select 2) >> "mass") * ((_items select 1) select _foreachIndex));
    } foreach (_items select 0);
    
    _weight
};
_fnc = {
    private ["_weight", "_items"];
    _items = _this select 0;
    _weight = 0;
    {
        _weight = _weight + (getNumber (ConfigFile >> (_this select 1) >> _x >> "mass") * ((_items select 1) select _foreachIndex));
    } foreach (_items select 0);
    
    _weight
};
_totalWeight = ([getMagazineCargo _object, "CfgMagazines"] call _fnc);
_totalWeight = _totalWeight + ([getItemCargo _object, "CfgWeapons", "ItemInfo"] call _fnc_Extra);
_totalWeight = _totalWeight + ([getWeaponCargo _object, "CfgWeapons", "WeaponSlotsInfo"] call _fnc_Extra);
_totalWeight = _totalWeight + ([getBackpackCargo _object, "CfgVehicles"] call _fnc);

_totalWeight = _totalWeight * 0.5; // Mass in Arma isn't an exact amount but rather a volume/weight value. This attempts to work around that by making it a usable value. (sort of).

_totalWeight