#include "script_component.hpp"

["MouseButtonUp", LINKFUNC(onMouseButtonUp)] call CBA_fnc_addDisplayHandler;
GVAR(mouseLeft) = false;
GVAR(mouseRight) = false;
GVAR(blockFireEHID) = -1;

[QGVAR(ropeAttachTo), {
    params ["_child", "_relativeAttachPos", "_rope", "_helper"];
    TRACE_4("ropeAttachTo",_child,_relativeAttachPos,_rope,_helper);
    _helper ropeDetach _rope;
    [_child, _relativeAttachPos] ropeAttachTo _rope;
    deleteVehicle _helper;
}] call CBA_fnc_addEventHandler;

[QGVAR(attachVehicles), LINKFUNC(attachVehicles)] call CBA_fnc_addEventHandler;
[QGVAR(detachChild), LINKFUNC(detachChild)] call CBA_fnc_addEventHandler;

if (!isServer) exitWith {};

[QGVAR(cleanupParent), {
    params ["_parent"];
    TRACE_1("cleanupParent",_parent);
    _parent removeEventHandler ["RopeBreak", _parent getVariable [QGVAR(RopeBreakEHID), -1]];
    _parent setVariable [QGVAR(RopeBreakEHID), -1];
    private _parentParentHooks = _parent getVariable [QGVAR(parentHooks), []];
    if (_parentParentHooks isEqualTo []) then {
        TRACE_1("remove Deleted EH",_parent);
        _parent removeEventHandler ["Deleted", _parent getVariable [QGVAR(DeletedEHID), -1]];
        _parent setVariable [QGVAR(DeletedEHID), -1];
    };
}] call CBA_fnc_addEventHandler;

addMissionEventHandler ["PlayerConnected", {
    if (GVAR(allChildren) isEqualTo []) exitWith {};
    params ["", "", "", "_jip", "_owner"];
    if (!_jip) exitWith {};
    TRACE_2("pushing children",_owner,GVAR(allChildren));
    [QGVAR(setTowParentAllChildren), [GVAR(allChildren)], _owner] call CBA_fnc_ownerEvent;
}];