2016-10-08 10:55:30 +00:00
|
|
|
#include "script_component.hpp"
|
2023-10-02 17:29:38 +00:00
|
|
|
#include "\a3\ui_f\hpp\defineDIKCodes.inc"
|
2016-10-08 10:55:30 +00:00
|
|
|
|
2017-09-16 19:24:43 +00:00
|
|
|
if (hasInterface) then {
|
2023-12-07 03:20:47 +00:00
|
|
|
#include "initKeybinds.inc.sqf"
|
2016-10-08 10:55:30 +00:00
|
|
|
|
2017-09-16 19:24:43 +00:00
|
|
|
GVAR(pfID) = -1;
|
|
|
|
|
2021-10-11 20:48:30 +00:00
|
|
|
["CBA_settingsInitialized", {
|
2022-05-05 16:07:54 +00:00
|
|
|
// Handle Map Drawing
|
|
|
|
GVAR(mapLaserSource) = objNull;
|
|
|
|
["ACE_controlledUAV", LINKFUNC(addMapHandler)] call CBA_fnc_addEventHandler;
|
|
|
|
["turret", LINKFUNC(addMapHandler), false] call CBA_fnc_addPlayerEventHandler;
|
|
|
|
["unit", LINKFUNC(addMapHandler), true] call CBA_fnc_addPlayerEventHandler;
|
|
|
|
|
|
|
|
// Laser code display
|
2017-09-16 19:24:43 +00:00
|
|
|
["turret", LINKFUNC(showVehicleHud), false] call CBA_fnc_addPlayerEventHandler;
|
|
|
|
["vehicle", LINKFUNC(showVehicleHud), true] call CBA_fnc_addPlayerEventHandler; // only one of these needs the retro flag
|
|
|
|
|
|
|
|
// Add UAV Control Compatibility
|
|
|
|
["ACE_controlledUAV", {
|
|
|
|
params ["_UAV", "_seatAI", "_turret", "_position"];
|
|
|
|
TRACE_4("ACE_controlledUAV EH",_UAV,_seatAI,_turret,_position);
|
|
|
|
if (!isNull _seatAI) then {
|
|
|
|
[_seatAI] call FUNC(showVehicleHud);
|
2017-12-21 22:49:48 +00:00
|
|
|
} else {
|
|
|
|
[ace_player] call FUNC(showVehicleHud);
|
2017-09-16 19:24:43 +00:00
|
|
|
};
|
|
|
|
}] call CBA_fnc_addEventHandler;
|
|
|
|
}] call CBA_fnc_addEventHandler;
|
|
|
|
};
|
|
|
|
|
2016-10-08 10:55:30 +00:00
|
|
|
// Global Laser EHs
|
|
|
|
["ace_laserOn", {
|
|
|
|
params ["_uuid", "_args"];
|
|
|
|
TRACE_2("ace_laserOn eh",_uuid,_args);
|
2023-07-28 04:03:02 +00:00
|
|
|
|
2021-10-10 16:55:14 +00:00
|
|
|
GVAR(laserEmitters) set [_uuid, _args];
|
2023-07-28 04:03:02 +00:00
|
|
|
private _unit = _args select 0;
|
|
|
|
if (local _unit && {hasPilotCamera _unit}) then {
|
|
|
|
[_unit] call FUNC(laserPointTrack);
|
|
|
|
};
|
2016-10-08 10:55:30 +00:00
|
|
|
}] call CBA_fnc_addEventHandler;
|
|
|
|
|
|
|
|
["ace_laserOff", {
|
|
|
|
params ["_uuid"];
|
|
|
|
TRACE_1("ace_laserOn eh",_uuid);
|
2021-10-10 16:55:14 +00:00
|
|
|
GVAR(laserEmitters) deleteAt _uuid;
|
2016-10-08 10:55:30 +00:00
|
|
|
}] call CBA_fnc_addEventHandler;
|
|
|
|
|
2016-11-17 19:28:25 +00:00
|
|
|
[QGVAR(updateCode), {
|
|
|
|
params ["_uuid", "_newCode"];
|
|
|
|
TRACE_2("ace_laser_updateCode eh",_uuid,_newCode);
|
2021-10-10 16:55:14 +00:00
|
|
|
if (_uuid in GVAR(laserEmitters)) then {
|
|
|
|
private _laserArray = GVAR(laserEmitters) get _uuid;
|
2016-11-17 19:28:25 +00:00
|
|
|
TRACE_2("updating",_newCode,_laserArray select 4);
|
|
|
|
_laserArray set [4, _newCode];
|
|
|
|
};
|
|
|
|
}] call CBA_fnc_addEventHandler;
|
|
|
|
|
2023-10-09 16:58:00 +00:00
|
|
|
["Air", "init", {
|
2023-07-28 04:03:02 +00:00
|
|
|
params ["_unit"];
|
|
|
|
if (hasPilotCamera _unit) then {
|
2023-10-09 16:58:00 +00:00
|
|
|
if (!alive _unit) exitWith {};
|
|
|
|
// some helicopters just have a static downward camera for cargo loading
|
|
|
|
if ((getNumber ((configOf _unit) >> "pilotCamera" >> "controllable")) == 0) exitWith {};
|
|
|
|
|
2023-07-28 04:03:02 +00:00
|
|
|
_unit setVariable [QGVAR(hasLaserSpotTracker), true];
|
|
|
|
_unit setVariable [QGVAR(laserSpotTrackerOn), false];
|
2023-10-09 16:58:00 +00:00
|
|
|
|
|
|
|
private _condition = {
|
|
|
|
//IGNORE_PRIVATE_WARNING ["_target", "_player"];
|
|
|
|
(_player == driver _target)
|
|
|
|
&& {(_target getVariable [QGVAR(laserSpotTrackerOn), false])}
|
|
|
|
&& {[_player, _target, []] call EFUNC(common,canInteractWith)}
|
|
|
|
};
|
|
|
|
private _actionOff = ["LSTOff", localize LSTRING(LSTOff), "", {[_this select 0] call FUNC(toggleLST)}, _condition] call EFUNC(interact_menu,createAction);
|
|
|
|
[_unit, 1, ["ACE_SelfActions"], _actionOff] call EFUNC(interact_menu,addActionToObject);
|
|
|
|
|
|
|
|
private _condition = {
|
|
|
|
//IGNORE_PRIVATE_WARNING ["_target", "_player"];
|
|
|
|
(_player == driver _target)
|
|
|
|
&& {!(_target getVariable [QGVAR(laserSpotTrackerOn), false])}
|
|
|
|
&& {[_player, _target, []] call EFUNC(common,canInteractWith)}
|
|
|
|
};
|
|
|
|
private _actionOn = ["LSTOn", localize LSTRING(LSTOn), "", {[_this select 0] call FUNC(toggleLST)}, _condition] call EFUNC(interact_menu,createAction);
|
|
|
|
[_unit, 1, ["ACE_SelfActions"], _actionOn] call EFUNC(interact_menu,addActionToObject);
|
2023-07-28 04:03:02 +00:00
|
|
|
};
|
|
|
|
}, true, [], true] call CBA_fnc_addClassEventHandler;
|
|
|
|
|
|
|
|
|
2016-10-08 10:55:30 +00:00
|
|
|
// Shows detector and mine posistions in 3d when debug is on
|
|
|
|
#ifdef DRAW_LASER_INFO
|
|
|
|
addMissionEventHandler ["Draw3D", {_this call FUNC(dev_drawVisibleLaserTargets)}];
|
|
|
|
#endif
|