#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 "MESSAGE"; _text = composeText [_text, lineBreak ]; _text = composeText [_text, parseText "AssetAvailable", 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[ " %2%3 [ %4 ]", _image, _name, _available, _assigned ]; // private _data = format[ // " // %2 // %3 // %4", // _image, // _name, // _assigned, // _available // ]; _text = composeText[ _text, parseText _data, lineBreak ]; } foreach _distinctStartingAssetsClassNames; hint _text;