ACE3/addons/common/functions/fnc_loadSettingsOnServer.sqf
2015-09-18 18:28:19 +02:00

61 lines
1.7 KiB
Plaintext

/*
* Author: esteldunedain
* Load the parameters on the server.
* Config < Server UserConfig < Mission Config
*
* Arguments:
* None
*
* Return Value:
* None
*
* Public: No
*/
#include "script_component.hpp"
GVAR(settings) = [];
private "_fnc_parseConfigForSettings";
_fnc_parseConfigForSettings = {
private ["_config", "_countOptions", "_optionEntry"];
_config = _this select 0;
_countOptions = count _config;
for "_index" from 0 to (_countOptions - 1) do {
_optionEntry = _config select _index;
[_optionEntry] call FUNC(setSettingFromConfig);
};
// Check if all settings should be forced
if (GVAR(forceAllSettings)) then {
{
_x set [6, true];
false
} count GVAR(settings);
};
};
// Order is this way because:
// ACE_Settings should never force any setting by default. Loading it first ensures that all settings from ACE_Settings exist.
// This way, ACE_ServerSettings will override ACE_Settings, even if no force is used.
// Mission settings will override the server config settings, if no force is used.
// This ensures that all settings are of their correct type, in case an outdated or corrupt server config is used , as well as have their correct localized display name and description
// Regular config
[configFile >> "ACE_Settings"] call _fnc_parseConfigForSettings;
// Server config
[configFile >> "ACE_ServerSettings"] call _fnc_parseConfigForSettings;
// mission side settings
[missionConfigFile >> "ACE_Settings"] call _fnc_parseConfigForSettings;
// Publish all settings data
publicVariable QGVAR(settings);
// Publish all setting values
{
publicVariable (_x select 0);
false
} count GVAR(settings);