ACE3/addons/laser/functions/fnc_addMapHandler.sqf
jonpas 742626ff1a
General - Relative script_component.hpp includes (#9378)
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2023-09-12 20:58:10 +02:00

71 lines
2.1 KiB
Plaintext

#include "..\script_component.hpp"
/*
* Author: PabstMirror
* Add laser drawing to map
*
* Arguments:
* None
*
* Return Value:
* None
*
* Example:
* [] call ace_laser_fnc_addMapHandler
*
* Public: No
*/
TRACE_3("addMapHandler",ace_player,typeOf vehicle ace_player,ACE_controlledUAV);
GVAR(mapLaserSource) = call {
if (GVAR(showLaserOnMap) == 0) exitWith {
TRACE_1("setting - disabled",GVAR(showLaserOnMap));
objNull
};
if (alive (ACE_controlledUAV # 0)) exitWith {
TRACE_1("using UAV",objNull);
ACE_controlledUAV # 0;
};
if (GVAR(showLaserOnMap) == 1) exitWith {
TRACE_1("setting - no UAV",GVAR(showLaserOnMap));
objNull
};
private _player = ace_player;
private _vehicle = vehicle _player;
if ((_player != _vehicle) && {_player in [gunner _vehicle, commander _vehicle]}) exitWith {
TRACE_1("using player's vehicle",_vehicle);
_vehicle
};
if (GVAR(showLaserOnMap) == 2) exitWith {
TRACE_1("setting - no UAV or vehicle",GVAR(showLaserOnMap));
objNull
};
TRACE_1("using player",_player);
_player
};
if (!alive GVAR(mapLaserSource)) exitWith {};
[{!isNull findDisplay 12}, // for some reason the display is null for the frame when starting to control drone
{
private _map = ((findDisplay 12) displayCtrl 51);
private _ehID = _map getVariable [QGVAR(ehID), -1];
if (_ehID > -1) exitWith {};
_ehID = _map ctrlAddEventHandler ["Draw", {
if (!alive GVAR(mapLaserSource)) exitWith {};
private _laserTarget = laserTarget GVAR(mapLaserSource);
if (!alive _laserTarget) exitWith {};
params ["_map"];
_map drawLine [getPos _laserTarget, getPos GVAR(mapLaserSource), [1,0,0,0.333]];
_map drawIcon [
"\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa",
[1,0,1,1],
(getPos _laserTarget),
16, 16,
((getDir _laserTarget) + 90)
];
}];
TRACE_2("added map drawEH",_map,_ehID);
_map setVariable [QGVAR(ehID), _ehID];
}, []] call CBA_fnc_waitUntilAndExecute;