From be67cf0737e8faf60349bd5e1a349dc0b4ef8930 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 10 Dec 2017 12:13:17 -0600 Subject: [PATCH] Transfer old client settings to CBA (#5882) * Transfer old client settings to CBA * Remove cleanup code --- addons/common/XEH_PREP.hpp | 1 + addons/common/XEH_postInit.sqf | 4 +- .../fnc_cbaSettings_transferUserSettings.sqf | 42 +++++++++++++++++++ 3 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 addons/common/functions/fnc_cbaSettings_transferUserSettings.sqf diff --git a/addons/common/XEH_PREP.hpp b/addons/common/XEH_PREP.hpp index f90bef3a9c..907e4f0610 100644 --- a/addons/common/XEH_PREP.hpp +++ b/addons/common/XEH_PREP.hpp @@ -3,6 +3,7 @@ TRACE_1("",QUOTE(ADDON)); PREP(cbaSettings); PREP(cbaSettings_loadFromConfig); PREP(cbaSettings_settingChanged); +PREP(cbaSettings_transferUserSettings); PREP(actionKeysNamesConverted); PREP(addCanInteractWithCondition); diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 4f4b61ed7b..5e20852592 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -180,8 +180,8 @@ private _previousVersion = profileNamespace getVariable ["ACE_VersionNumberStrin // check previous version number from profile if (_currentVersion != _previousVersion) then { - // do something - + INFO_2("Updating ACE from [%1] to [%2]",_previousVersion,_currentVersion); + [_previousVersion] call FUNC(cbaSettings_transferUserSettings); profileNamespace setVariable ["ACE_VersionNumberString", _currentVersion]; }; diff --git a/addons/common/functions/fnc_cbaSettings_transferUserSettings.sqf b/addons/common/functions/fnc_cbaSettings_transferUserSettings.sqf new file mode 100644 index 0000000000..8d55f671b7 --- /dev/null +++ b/addons/common/functions/fnc_cbaSettings_transferUserSettings.sqf @@ -0,0 +1,42 @@ +/* + * Author: PabstMirror + * Transfers a client's old ace settings to cba + * + * Arguments: + * 0: Old Version + * + * Return Value: + * None + * + * Example: + * ["3.11.0"] call ace_common_fnc_cbaSettings_transferUserSettings + * + * Public: No + */ +#include "script_component.hpp" + +if (!hasInterface) exitWith {}; + +params [["_lastVersion", "", [""]]]; + +if ((parseNumber _lastVersion) >= 3.12) exitWith {}; + +INFO("-Transfering old ACE_Settings to CBA-"); + +private _aceSettings = configProperties [configFile >> "ACE_Settings", "isClass _x"]; +{ + private _settingName = configName _x; + private _isClientSettable = (getNumber (_x >> "isClientSettable")) > 0; + private _profileVar = profileNamespace getVariable _settingName; + + if (!isNil "_profileVar") then { + private _currentValue = [_settingName, "client"] call CBA_settings_fnc_get; + if (_isClientSettable && {!(_currentValue isEqualTo _profileVar)}) then { + // CBA_settings_fnc_set will do type checking for the old profile var + private _ret = [_settingName, _profileVar, 0, "client", true] call CBA_settings_fnc_set; + INFO_3("Transfering setting [%1: %2] returned %3", _settingName, _profileVar, _ret); + }; + }; +} forEach _aceSettings; + +INFO("-Finished Transfering-");