locally tested, adds more features. ready for dedi
This commit is contained in:
123
functions/fbcb2/assets/markers/fn_showMarkersOnMap.sqf
Normal file
123
functions/fbcb2/assets/markers/fn_showMarkersOnMap.sqf
Normal file
@@ -0,0 +1,123 @@
|
||||
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];
|
||||
Reference in New Issue
Block a user