/*
 * Author: Glowbal
 * Export all config settings with their current values.
 *
 * Arguments:
 * None
 *
 * Return Value:
 * None
 *
 * Example:
 * [] call ACE_optionsmenu_fnc_exportSettings
 *
 * Public: No
 */

#include "script_component.hpp"

private ["_compiledConfig", "_name", "_typeName", "_isClientSetable", "_localizedName", "_localizedDescription", "_possibleValues", "_defaultValue", "_value", "_compiledConfigEntry", "_formatedValue"];

{
     /*_settingData = [
        _name,
        _typeName,
        _isClientSetable,
        _localizedName,
        _localizedDescription,
        _possibleValues,
        _isForced,
        _defaultValue
    ];*/

    _name = _x select 0;
    _typeName = _x select 1;
    _isClientSetable = _x select 2;
    _localizedName = _x select 3;
    _localizedDescription = _x select 4;
    _possibleValues = _x select 5;
    _defaultValue = _x select 6;

    if (GVAR(ClientSettingsExportIncluded) || !_isClientSetable) then {
        _value = missionNamespace getVariable [_name, _defaultValue];
        _formatedValue = switch (toLower _typeName) do {
            case ("scalar"): {
                format['value = %1;', _value];
            };
            case ("string"): {
                format['value = "%1";', _value];
            };
            case ("bool"): {
                if (!(_value isEqualType false)) then {ERROR("weird bool typename??");};
                _value = if ((_value isEqualType false) && {_value}) then {1} else {0};
                format ['value = %1;', _value];
            };
            case ("color"): {
                _value params [["_r",1], ["_b",0], ["_g",1], ["_a",1]];
                format ["value[] = {%1, %2, %3, %4};", _r, _b, _g, _a];
            };
            default {
                ERROR("unknown typeName");
                ""
            };

        };
        _compiledConfigEntry = format ["
class %1 {
    %2
    typeName = %3;
    force = 1;
};", _name, _formatedValue, format['"%1"', _typeName]];

        "ace_clipboard" callExtension _compiledConfigEntry;
    };
} forEach EGVAR(common,settings);

"ace_clipboard" callExtension "--COMPLETE--";

[LSTRING(settingsExported)] call EFUNC(common,displayTextStructured);