#include "..\script_component.hpp"
/*
 * Author: TheDrill, PabstMirror
 * The perFrameEventHandler to draw the icons
 *
 * Arguments:
 * None
 *
 * Return Value:
 * None
 *
 * Example:
 * [fromCBA] call ace_finger_fnc_perFrameEH;
 *
 * Public: No
 */

if (!alive ACE_player) then {GVAR(fingersHash) = createHashMap};
// Conditions: canInteract
if !([ACE_player, ACE_player, ["isNotInside", "isNotSwimming"]] call EFUNC(common,canInteractWith)) then {GVAR(fingersHash) = createHashMap};
// Make sure player is dismounted or in a static weapon:
if ((ACE_player != vehicle ACE_player) && {!((vehicle ACE_player) isKindOf "StaticWeapon")}) then {GVAR(fingersHash) = createHashMap};

private _iconBaseSize = GVAR(sizeCoef) * BASE_SIZE * 0.10713 * (call EFUNC(common,getZoom));

{
    //IGNORE_PRIVATE_WARNING ["_x", "_y"];
    _y params ["_lastTime", "_pos", "_name", "_sourceUnit"];
    private _timeLeftToShow = _lastTime + FP_TIMEOUT - diag_tickTime;
    if (_timeLeftToShow <= 0) then {
        GVAR(fingersHash) deleteAt _x;
    } else {
        private _drawColor = + GVAR(indicatorColor);
        // Fade out:
        _drawColor set [3, ((_drawColor select 3) * ((_timeLeftToShow min 0.5) / 0.5))];

        private _iconSize = _iconBaseSize;
        if (GVAR(proximityScaling)) then {
            _iconSize = _iconSize * linearConversion [0, GVAR(maxRange), (getPosASL ACE_player) vectorDistance (getPosASL _sourceUnit), 0.25, 2, true];
        };

        drawIcon3D [QPATHTOF(UI\fp_icon2.paa), _drawColor, ASLtoAGL _pos, _iconSize, _iconSize, 0, _name, 1, 0.03, "RobotoCondensed"];
    };
} forEach GVAR(fingersHash);

if (GVAR(fingersHash) isEqualTo createHashMap) then {
    TRACE_1("Ending PFEH",GVAR(pfeh_id));
    [GVAR(pfeh_id)] call CBA_fnc_removePerFrameHandler;
    GVAR(pfeh_id) = -1;
};