#include "..\script_component.hpp"

// get vehicles the mission started with at base locations
(call FUNC(getStartingAndCurrentAssets)) params [
	"_startingAssets",
	"_currentAssets"
];

// get distinct classnames to group by
private _distinctStartingAssetsClassNames = [];
{
	_x params ["_netId", "_cfg"];
	private _className = configName _cfg;
	_distinctStartingAssetsClassNames pushBackUnique _className;
} forEach _startingAssets;

// get the approved assets config to identify callsigns
private _approvedAssetsCfg = call EFUNC(common,getApprovedAssetsCfg);
if (isNull _approvedAssetsCfg) exitWith {
	[
		LEVEL_ERROR,
		QUOTE(COMPONENT),
		"No approved assets defined.",
		[]
	] call EFUNC(common,log);
	[
		"ERROR: No approved assets defined. See defines/ApprovedAssets.hpp"
	] call BIS_fnc_error;
};

_text = parseText "<t size='4'>MESSAGE</t>";
_text = composeText [_text, lineBreak ];

_text = composeText [_text, parseText "<t align='left' size='2'>Asset</t><t align='right' size='2'>Available</t>", lineBreak ];
 
{
	private _className = _x;
	// only approved assets
	if (!isClass (_approvedAssetsCfg >> _className)) then {continue};

	private _callsign = [_className] call FUNC(getCallsignFromClassname);

	private _startingAssetsOfThisType = _startingAssets select {
		// select all starting assets of this type
		_x params ["_netId", "_cfg"];
		_className isEqualTo (configName _cfg);
	};
	private _currentAssetsOfThisType = _currentAssets select {
		_x params ["_netId", "_cfg"];
		private _object = _netId call BIS_fnc_objectFromNetId;
		// objNull if deleted, then check classname and if alive
		!isNull _object && {
			_className isEqualTo (typeOf _object) &&
			alive _object
		};
	};

	(_startingAssetsOfThisType#0) params [
		"_assetNetId",
		"_assetCfg"
	];

	_assigned = count _startingAssetsOfThisType;
	_available =  count _currentAssetsOfThisType;
	// count (getMarkerPos "respawn_west"  nearEntities [ _asset, 2000] );  
	
	
	_image = getText(_assetCfg >> "picture");

	_name = getText(_assetCfg >> "displayName") select [0, 22];
	private _data = format[
		"<img size='1' align='left' image='%1'/><t size='1' align='left'>  %2</t><t size='1' align='right'>%3   [ %4 ]</t>",
		_image,
		_name,
		_available,
		_assigned
	];

	// private _data = format[
	// 	"<img size='1' align='left' image='%1'/>
	// 	<t size='1' align='left'>  %2</t>
	// 	<t size='1' align='middle'>%3</t>
	// 	<t size='1' align='right'>%4</t>",
	// 	_image,
	// 	_name,
	// 	_assigned,
	// 	_available
	// ];
	_text = composeText[ _text,  parseText _data, lineBreak ];  
   
  
} foreach _distinctStartingAssetsClassNames;
 
hint _text;