ACE3/addons/switchunits/functions/fnc_markAiOnMap.sqf
2015-07-26 09:19:09 +02:00

72 lines
2.1 KiB
Plaintext

/*
* Author: bux578
* Creates markers for AI units for given sides.
* Marks players in a different colour.
*
* Arguments:
* 0: side <OBJECT>
*
* Return Value:
* None
*
* Example:
* [[west, east]] call FUNC(markAiOnMap)
*
* Public: No
*/
#include "script_component.hpp"
private "_sidesToShow";
_sidesToShow = _this select 0;
GVAR(AllMarkerNames) = [];
DFUNC(pfhMarkAiOnMap) = {
private ["_args", "_sides"];
_args = _this select 0;
_sides = _args select 0;
// delete markers
{
deleteMarkerLocal _x;
} forEach GVAR(AllMarkerNames);
// reset the array
GVAR(AllMarkerNames) = [];
if (alive ACE_player && {GVAR(OriginalUnit) getVariable ["ACE_CanSwitchUnits", false]}) then {
// create markers
{
if (([_x] call FUNC(isValidAi) && (side group _x in _sides)) || (_x getVariable [QGVAR(IsPlayerControlled), false])) then {
private ["_markerName", "_marker", "_markerColor"];
_markerName = str _x;
_marker = createMarkerLocal [_markerName, position _x];
_markerName setMarkerTypeLocal "mil_triangle";
_markerName setMarkerShapeLocal "ICON";
_markerName setMarkerSizeLocal [0.5,0.7];
_markerName setMarkerDirLocal getDir _x;
// commy's one liner magic
_markerColor = format ["Color%1", side group _x];
if ((_x getVariable [QGVAR(IsPlayerControlled), false])) then {
_markerName setMarkerColorLocal "ColorOrange";
_markerName setMarkerTextLocal (_x getVariable [QGVAR(PlayerControlledName), ""]);
} else {
_markerName setMarkerColorLocal _markerColor;
_markerName setMarkerTextLocal (getText (configFile >> "CfgVehicles" >> typeOf _x >> "displayName"));
};
GVAR(AllMarkerNames) pushBack _markerName;
};
} forEach allUnits;
};
};
[FUNC(pfhMarkAiOnMap), 1.5, [_sidesToShow]] call CBA_fnc_addPerFrameHandler;