Files
MissionTemplate/functions/fbcb2/assets/markers/fn_showMarkersOnMap.sqf

124 lines
3.3 KiB
Plaintext

params [
["_className", "", [""]],
["_markerType", "hd_dot", [""]],
["_markerColor", "", [""]],
["_assetObjects", [], []]
];
if (count _className isEqualTo 0) exitWith {
["No class name provided!"] call BIS_fnc_error;
};
if (count _markerColor isEqualTo 0) exitWith {
["No marker color provided!"] call BIS_fnc_error;
};
if (count _assetObjects isEqualTo 0) exitWith {
["No vehicles provided!"] call BIS_fnc_error;
};
private _baseMarkerStoreVar = "milsim_fbcb2_assets_baseMarkerStore";
private _assetMarkerStoreVar = "milsim_fbcb2_assets_assetMarkerStore";
private _baseMarkerStore = localNamespace getVariable [
_baseMarkerStoreVar,
[]
];
private _assetMarkerStore = localNamespace getVariable [
_assetMarkerStoreVar,
[]
];
///////////////////////////////////////////////////////////////////////////////
// Create base markers if not already present
if (not (count _baseMarkerStore > 0)) then {
{
private _base = _x;
// create a circle marker with range as the detection range of assets
_newMarker = createMarkerLocal [
format["milsim_fbcb2_assets_base_marker_%1", _forEachIndex + 1],
getPosASL _base
];
_newMarker setMarkerTypeLocal "mil_dot";
_newMarker setMarkerColorLocal "ColorGreen";
_newMarker setMarkerShapeLocal "ELLIPSE";
_newMarker setMarkerSizeLocal [
milsim_fbcb2_assets_setting_detectionRangeFromBase,
milsim_fbcb2_assets_setting_detectionRangeFromBase
];
_newMarker setMarkerAlphaLocal 0.5;
_newMarker setMarkerTextLocal str(_forEachIndex + 1);
_baseMarkerStore pushBack [
_base,
_newMarker
];
// create a flag marker at base position
_newMarker = createMarkerLocal [
format["milsim_fbcb2_assets_base_flag_marker_%1", _forEachIndex + 1],
getPosASL _base
];
_newMarker setMarkerTypeLocal "mil_flag";
_newMarker setMarkerColorLocal "ColorGreen";
_newMarker setMarkerSizeLocal [0.7, 0.7];
_newMarker setMarkerTextLocal ([_base] call milsim_fnc_getNameOfBase);
_baseMarkerStore pushBack [
_base,
_newMarker
];
} forEach milsim_baseObjects;
localNamespace setVariable [_baseMarkerStoreVar, _baseMarkerStore];
};
private _start = (count _assetMarkerStore) + 1;
private _createdAssetMarkers = [];
{
private _asset = _x;
// if asset was removed since last update
if (isNull _asset) then {continue};
// check if a marker is already placed for this asset
if (
(_assetMarkerStore findIf { _x select 0 isEqualTo _asset })
> -1
) then {continue};
// create a marker for the asset
private _newMarker = createMarkerLocal [
format["milsim_fbcb2_assets_marker_%1", _start],
getPosASL _asset
];
_newMarker setMarkerAlphaLocal 0;
_newMarker setMarkerTypeLocal _markerType;
_newMarker setMarkerColorLocal _markerColor;
// _newMarker setMarkerTextLocal ([configOf _asset] call BIS_fnc_displayName);
_createdAssetMarkers pushBack [
_asset,
_newMarker
];
_start = _start + 1;
} forEach _assetObjects;
// unhide added asset markers sequentially
[_createdAssetMarkers apply {_x#1}] spawn {
params ["_markers"];
for "_alpha" from 0.0 to 1.0 step 0.03 do
{
{
_x setMarkerAlphaLocal _alpha;
} forEach _markers;
Sleep 0.002;
};
};
// add to store
{
_assetMarkerStore pushBack _x;
} forEach _createdAssetMarkers;
// update store var
localNamespace setVariable [_assetMarkerStoreVar, _assetMarkerStore];