#include "..\script_component.hpp"

/*
 * Author: IDSolutions
 * Initializes the hvt module
 *
 * Arguments:
 * 0: Logic <OBJECT> - The logic object
 * 1: Units <ARRAY> - The array of units
 * 2: Activated <BOOL> - Whether the module is activated
 *
 * Return Value:
 * None
 *
 * Example:
 * [logicObject, [unit1, unit2], true] call forge_client_task_fnc_hvtModule;
 *
 * Public: No
 */

params [["_logic", objNull, [objNull]], ["_units", [], [[]]], ["_activated", true, [true]]];

if !(_activated) exitWith {};

private _taskID = _logic getVariable ["TaskID", ""];
private _limitFail = _logic getVariable ["LimitFail", -1];
private _limitSuccess = _logic getVariable ["LimitSuccess", -1];
private _extraction = _logic getVariable ["ExtZone", ""];
private _companyFunds = _logic getVariable ["CompanyFunds", 0];
private _ratingFail = _logic getVariable ["RatingFail", 0];
private _ratingSuccess = _logic getVariable ["RatingSuccess", 0];
private _capture = _logic getVariable ["CaptureHVT", true];
private _eliminate = _logic getVariable ["EliminateHVT", false];
private _endSuccess = _logic getVariable ["EndSuccess", false];
private _endFail = _logic getVariable ["EndFail", false];
private _timeLimit = _logic getVariable ["TimeLimit", 0];

diag_log format ["[FORGE] HVT Module Parameters: TaskID: %1, LimitFail: %2, LimitSuccess: %3, ExtractionZone: %4, Funds: %5, RatingFail: %6, RatingSuccess: %7, CaptureHvt: %8, EliminateHvt: %9, EndSuccess: %10, EndFail: %11, Time: %12", 
    _taskID, _limitFail, _limitSuccess, _extraction, _companyFunds, _ratingFail, _ratingSuccess, _capture, _eliminate, _endSuccess, _endFail, _timeLimit];

private _syncedEntities = synchronizedObjects _logic;
diag_log format ["[FORGE] HVT Module Synced Entities: %1", _syncedEntities];

{
    if (!isNull _x && (_x isNotEqualTo str objNull)) then {
        [_x, _taskID] spawn FUNC(makeHVT);
    };
} forEach _syncedEntities;

if (_timeLimit == 0) then {
    [_taskID, _limitFail, _limitSuccess, _extraction, _companyFunds, _ratingFail, _ratingSuccess, [_capture, _eliminate], _endSuccess, _endFail] spawn FUNC(hvt);
} else {
    [_taskID, _limitFail, _limitSuccess, _extraction, _companyFunds, _ratingFail, _ratingSuccess, [_capture, _eliminate], _endSuccess, _endFail, _timeLimit] spawn FUNC(hvt);
};

deleteVehicle _logic;