#include "script_component.hpp"
/*
 * Author: PabstMirror
 * Handles the map helper's draw event
 * Resets arguments if not run recently
 * And starts a watchdog to detect when weapon display unloaded
 *
 * Arguments:
 * None
 *
 * Return Value:
 * None
 *
 * Example:
 * [] call ace_javelin_fnc_mapHelperDraw
 *
 * Public: No
 */

if (isNil QGVAR(arguments)) then {
    TRACE_1("Starting optic draw", _this);

    // reset shooter var:
    private _currentShooter = if (ACE_player call CBA_fnc_canUseWeapon) then {ACE_player} else {vehicle ACE_player};
    _currentShooter setVariable ["ace_missileguidance_target", nil, false];

    GVAR(arguments) = [
        diag_frameno,       // Last run frame
        objNull,            // currentTargetObject
        0,                  // Lock Start Time
        0,                  // Next Sound timer
        -1,                 // _fireDisabledEH
        0                   // _nextTargetScan
    ];

    // Start up a watchdog for when the display is no longer shown (but might not be unloaded or null)
    [{
        if (isNull (uiNamespace getVariable ["ACE_RscOptics_javelin", displayNull])) exitWith {true};
        GVAR(arguments) params ["_lastRunFrame"];
        (diag_frameno < _lastRunFrame) || {diag_frameno > (_lastRunFrame + 1)}
    }, {
        TRACE_1("old/null display - ending optic draw",_this);
        private _fireDisabledEH = GVAR(arguments) param [4, -1];
        [_fireDisabledEH] call FUNC(enableFire);
        GVAR(arguments) = nil;
    }, []] call CBA_fnc_waitUntilAndExecute;
};

BEGIN_COUNTER(onOpticDraw);
GVAR(arguments) call FUNC(onOpticDraw);
END_COUNTER(onOpticDraw);