forge/arma/server/addons/task/functions/helpers/fnc_parseRewards.sqf
2026-05-23 09:23:12 -05:00

53 lines
1.4 KiB
Plaintext

#include "..\script_component.hpp"
/*
* Author: OpenAI
* Parses an Eden module reward string into a SQF array.
*
* Supports both the preferred comma-separated format:
* ItemGPS, FirstAidKit
* and the legacy SQF array string format:
* ["ItemGPS","FirstAidKit"]
*
* Arguments:
* 0: Raw value <STRING>
* 1: Task label <STRING>
* 2: Reward key <STRING>
*
* Return Value:
* Parsed reward array <ARRAY>
*
* Example:
* [_logic getVariable ["EquipmentRewards", ""], "attack_01", "equipment"] call forge_server_task_fnc_parseRewards;
*
* Public: No
*/
params [["_rawValue", "", [""]], ["_taskLabel", "", [""]], ["_rewardKey", "", [""]]];
private _trimmed = trim _rawValue;
if (_trimmed isEqualTo "") exitWith { [] };
if ((_trimmed select [0, 1]) isEqualTo "[") then {
private _parsed = parseSimpleArray _trimmed;
if (_parsed isEqualType []) exitWith { _parsed };
["WARNING", format [
"Task module '%1' reward input '%2' is invalid: %3. Expected comma-separated class names like ItemGPS, FirstAidKit or SQF array syntax like [""ItemGPS"",""FirstAidKit""].",
_taskLabel,
_rewardKey,
_rawValue
]] call EFUNC(common,log);
[]
};
private _parsedRewards = [];
{
private _reward = trim _x;
if (_reward isEqualTo "") then { continue; };
_parsedRewards pushBackUnique _reward;
} forEach (_trimmed splitString ",");
_parsedRewards