#include "script_component.hpp" /* * Author: dedmen * Adds the local unit event handlers. * Access with function `ace_common_fnc_getLocalUnits` or array `ace_common_localUnits` * * Arguments: * Nothing * * Return Value: * Nothing * * Example: * [] call ace_common_fnc_setupLocalUnitsHandler * * Public: No */ // Ignore UAV/Drone AI #define IGNORE_BASE_UAVPILOTS "B_UAV_AI", "O_UAV_AI", "UAV_AI_base_F" GVAR(localUnits) = []; // Eventhandlers to maintain array of localUnits ["CAManBase", "init", { params ["_unit"]; TRACE_2("unit init",_unit,local _unit); if (local _unit) then { if (!alive _unit) exitWith {}; GVAR(localUnits) pushBack _unit; }; }, true, [IGNORE_BASE_UAVPILOTS]] call CBA_fnc_addClassEventHandler; ["CAManBase", "respawn", { params ["_unit"]; TRACE_2("unit respawn",_unit,local _unit); if (local _unit) then { if (!alive _unit) exitWith {}; GVAR(localUnits) pushBack _unit; }; }, true, [IGNORE_BASE_UAVPILOTS]] call CBA_fnc_addClassEventHandler; ["CAManBase", "local", { params ["_unit", "_local"]; TRACE_2("unit local",_unit,_local); if (_local) then { if (!alive _unit) exitWith {}; GVAR(localUnits) pushBack _unit; } else { GVAR(localUnits) deleteAt (GVAR(localUnits) find _unit); }; }, true, [IGNORE_BASE_UAVPILOTS]] call CBA_fnc_addClassEventHandler; ["CAManBase", "deleted", { params ["_unit"]; TRACE_2("unit deleted",_unit,local _unit); if (local _unit) then { [{ params ["_unit"]; TRACE_3("unit deleted nextFrame",_unit,local _unit,isNull _unit); if (isNull _unit) then { // If it is not null then the deleted EH was Fake. GVAR(localUnits) = GVAR(localUnits) - [objNull]; }; }, [_unit]] call CBA_fnc_execNextFrame; }; }, true, [IGNORE_BASE_UAVPILOTS]] call CBA_fnc_addClassEventHandler; ["CAManBase", "killed", { params ["_unit"]; TRACE_2("unit killed",_unit,local _unit); if (local _unit) then { GVAR(localUnits) deleteAt (GVAR(localUnits) find _unit); }; }, true, [IGNORE_BASE_UAVPILOTS]] call CBA_fnc_addClassEventHandler;