76 lines
2.3 KiB
Plaintext
76 lines
2.3 KiB
Plaintext
#include "..\script_component.hpp"
|
|
|
|
// adds default base locations to players' microDAGR as waypoints
|
|
|
|
if (!hasInterface) exitWith {};
|
|
|
|
[{!isNull player}, {
|
|
|
|
// add base locations (respawn modules)
|
|
{
|
|
private _wpName = [_x] call EFUNC(common,getNameOfBase);
|
|
private _posASL = getPosASL _x;
|
|
[_wpName, _posASL] call ace_microdagr_fnc_deviceAddWaypoint;
|
|
} forEach GVARMAIN(baseObjects);
|
|
|
|
// add custom waypoints from mission_settings.hpp
|
|
private _customWaypoints = [missionConfigFile >> "custom_microdagr_waypoints", "ARRAY", []] call CBA_fnc_getConfigEntry;
|
|
{
|
|
_x params [
|
|
["_wpName", ""],
|
|
["_pos", [0, 0, 0], [[], ""]],
|
|
["_object", "", [""]]
|
|
];
|
|
private _realPos = nil;
|
|
// if pos was provided, process
|
|
if (count _pos >= 2) then {
|
|
switch (typeName _pos) do {
|
|
case "ARRAY": {
|
|
// pos is provided as an array
|
|
_realPos = _pos select [0, 2];
|
|
_realPos set [2, getTerrainHeightASL _realPos];
|
|
};
|
|
case "STRING": {
|
|
// pos is provided as a string
|
|
_realPos = [_pos, true] call ACE_common_fnc_getMapPosFromGrid;
|
|
_realPos set [2, getTerrainHeightASL _realPos];
|
|
};
|
|
default {
|
|
[
|
|
LEVEL_WARNING,
|
|
QUOTE(COMPONENT),
|
|
format["Invalid position for custom microDAGR waypoint: %1", _wpName],
|
|
[["name", _wpName], ["pos", _pos], ["object", _object]]] call EFUNC(common,log);
|
|
continue;
|
|
};
|
|
};
|
|
};
|
|
// if object was provided, process and override any pos
|
|
if (count _object > 0) then {
|
|
// object is provided as a string variable name
|
|
private _realObject = missionNamespace getVariable _object;
|
|
if (isNull _realObject) then {
|
|
[
|
|
LEVEL_WARNING,
|
|
QUOTE(COMPONENT),
|
|
format["Invalid object for custom microDAGR waypoint: %1", _wpName],
|
|
[["name", _wpName], ["pos", _pos], ["object", _object]]] call EFUNC(common,log);
|
|
continue;
|
|
};
|
|
_realPos = getPosASL (missionNamespace getVariable _object);
|
|
};
|
|
if (isNil "_realPos") then {
|
|
[
|
|
LEVEL_WARNING,
|
|
QUOTE(COMPONENT),
|
|
format["Invalid waypoint position for custom microDAGR waypoint: %1", _wpName],
|
|
[["name", _wpName], ["pos", _pos], ["object", _object]]] call EFUNC(common,log);
|
|
continue;
|
|
};
|
|
|
|
[_wpName, _realPos] call ace_microdagr_fnc_deviceAddWaypoint;
|
|
true;
|
|
} count _customWaypoints;
|
|
}] call CBA_fnc_waitUntilAndExecute;
|
|
|
|
nil; |