Merge pull request #753 from acemod/fixSettingsLocalization

Fix settings localization is done by the server instead of client
This commit is contained in:
jaynus 2015-04-18 20:09:56 -07:00
commit dccc869a6a
5 changed files with 57 additions and 4 deletions

View File

@ -4,6 +4,7 @@
// Load settings from profile
if (hasInterface) then {
call FUNC(loadSettingsFromProfile);
call FUNC(loadSettingsLocalizedText);
};
// Listens for global "SettingChanged" events, to update the force status locally

View File

@ -119,6 +119,7 @@ PREP(loadPerson);
PREP(loadPersonLocal);
PREP(loadSettingsFromProfile);
PREP(loadSettingsOnServer);
PREP(loadSettingsLocalizedText);
PREP(map);
PREP(moduleCheckPBOs);
PREP(moduleLSDVehicles);

View File

@ -13,6 +13,8 @@
*/
#include "script_component.hpp"
private ["_name", "_isClientSetable", "_isForced", "_profileValue"];
// Iterate through settings
{
_name = _x select 0;
@ -34,4 +36,5 @@
};
};
};
} forEach GVAR(settings);

View File

@ -0,0 +1,48 @@
/*
* Author: Glowbal
* Parse all settings and load the localized displayName and description for all text
*
* Arguments:
* None
*
* Return Value:
* None
*
* Public: No
*/
#include "script_component.hpp"
private ["_parseConfigForDisplayNames", "_name"];
_parseConfigForDisplayNames = {
private "_optionEntry";
_optionEntry = _this select 0;
if !(isClass _optionEntry) exitwith {false};
_x set [3, getText (_optionEntry >> "displayName")];
_x set [4, getText (_optionEntry >> "description")];
private "_values";
_values = _x select 5;
{
private "_text";
_text = _x;
if (((typeName _text) == "STRING") && {(count _text) > 1} && {(_text select [0,1]) == "$"}) then {
_text = localize (_text select [1, ((count _text) - 1)]); //chop off the leading $
_values set [_forEachIndex, _text];
};
} forEach _values;
true;
};
// Iterate through settings
{
_name = _x select 0;
if !([configFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames) then {
if !([configFile >> "ACE_ServerSettings" >> _name] call _parseConfigForDisplayNames) then {
[missionConfigFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames;
};
};
} forEach GVAR(settings);

View File

@ -75,9 +75,9 @@ if (isNil _name) then {
getNumber (_optionEntry >> "force") > 0,
_value
];
//Strings in the values array won't be localized from the config, so just do that now:
private "_values";
/*private "_values";
_values = _settingData select 5;
{
_text = _x;
@ -85,8 +85,8 @@ if (isNil _name) then {
_text = localize (_text select [1, ((count _text) - 1)]); //chop off the leading $
_values set [_forEachIndex, _text];
};
} forEach _values;
} forEach _values;*/
GVAR(settings) pushBack _settingData;