/*
 * Author: KoffeinFlummi and Commy2
 * Check if weapon optics changed and reset zeroing if needed
 *
 * Arguments:
 * 0: Player <OBJECT>
 *
 * Return Value:
 * None
 *
 * Public: No
 */
#include "script_component.hpp"

EXPLODE_1_PVT(_this,_player);

private ["_newOptics", "_adjustment"];

_adjustment = ACE_player getVariable QGVAR(Adjustment);
if (isNil "_adjustment") then {
    // [Windage, Elevation, Zero]
    _adjustment = [[0,0,0], [0,0,0], [0,0,0]];
    ACE_player setVariable [QGVAR(Adjustment), _adjustment];
    [ACE_player, QGVAR(Adjustment), _adjustment, 0.5] call EFUNC(common,setVariablePublic);
};

if (isNil QGVAR(Optics)) then {
    GVAR(Optics) = ["", "", ""];
};
_newOptics = [_player] call FUNC(getOptics);

{
    if (_newOptics select _forEachIndex != _x) then {
        // The optic for this weapon changed, set adjustment to zero
        if !((_adjustment select _foreachindex) isEqualTo [0,0,0]) then {
            _adjustment set [_forEachIndex, [0,0,0]];
            [ACE_player, QGVAR(Adjustment), _adjustment, 0.5] call EFUNC(common,setVariablePublic);
        };
    };
} forEach GVAR(Optics);

_adjustment = ACE_player getVariable QGVAR(Adjustment);
GVAR(Optics) = _newOptics;