diff --git a/addons/settings/fnc_gui_settingCheckbox.sqf b/addons/settings/fnc_gui_settingCheckbox.sqf index ed6a7f0b4..092d28739 100644 --- a/addons/settings/fnc_gui_settingCheckbox.sqf +++ b/addons/settings/fnc_gui_settingCheckbox.sqf @@ -21,6 +21,8 @@ _ctrlCheckbox ctrlAddEventHandler ["CheckedChanged", { // automatically check "overwrite client" for mission makers qol [_controlsGroup, _source] call (_controlsGroup getVariable QFUNC(auto_check_overwrite)); + // refresh priority to update overwrite color if current value is equal to overwrite + [_controlsGroup] call (_controlsGroup getVariable QFUNC(updateUI_locked)); }]; // set setting ui manually to new value diff --git a/addons/settings/fnc_gui_settingColor.sqf b/addons/settings/fnc_gui_settingColor.sqf index f4e71dad5..cf75f1233 100644 --- a/addons/settings/fnc_gui_settingColor.sqf +++ b/addons/settings/fnc_gui_settingColor.sqf @@ -42,6 +42,8 @@ for "_index" from 0 to ((count _currentValue max 3 min 4) - 1) do { // automatically check "overwrite client" for mission makers qol [_controlsGroup, _source] call (_controlsGroup getVariable QFUNC(auto_check_overwrite)); + // refresh priority to update overwrite color if current value is equal to overwrite + [_controlsGroup] call (_controlsGroup getVariable QFUNC(updateUI_locked)); }]; private _ctrlColorEdit = _controlsGroup controlsGroupCtrl (IDCS_SETTING_COLOR_EDIT select _index); @@ -75,6 +77,8 @@ for "_index" from 0 to ((count _currentValue max 3 min 4) - 1) do { // automatically check "overwrite client" for mission makers qol [_controlsGroup, _source] call (_controlsGroup getVariable QFUNC(auto_check_overwrite)); + // refresh priority to update overwrite color if current value is equal to overwrite + [_controlsGroup] call (_controlsGroup getVariable QFUNC(updateUI_locked)); }]; _ctrlColorEdit ctrlAddEventHandler ["KillFocus", { diff --git a/addons/settings/fnc_gui_settingDefault.sqf b/addons/settings/fnc_gui_settingDefault.sqf index 5089af612..cc2909b9f 100644 --- a/addons/settings/fnc_gui_settingDefault.sqf +++ b/addons/settings/fnc_gui_settingDefault.sqf @@ -18,6 +18,8 @@ _ctrlDefault ctrlAddEventHandler ["ButtonClick", { private _controlsGroup = ctrlParentControlsGroup _ctrlDefault; [_controlsGroup, _defaultValue] call (_controlsGroup getVariable QFUNC(updateUI)); + // refresh priority to update overwrite color if current value is equal to overwrite + [_controlsGroup] call (_controlsGroup getVariable QFUNC(updateUI_locked)); private _ctrlSettingName = _controlsGroup controlsGroupCtrl IDC_SETTING_NAME; _ctrlSettingName ctrlSetTextColor COLOR_TEXT_ENABLED_WAS_EDITED; diff --git a/addons/settings/fnc_gui_settingEditbox.sqf b/addons/settings/fnc_gui_settingEditbox.sqf index dc1407867..1804b4c65 100644 --- a/addons/settings/fnc_gui_settingEditbox.sqf +++ b/addons/settings/fnc_gui_settingEditbox.sqf @@ -39,6 +39,8 @@ _ctrlEditbox ctrlAddEventHandler ["KeyUp", { // automatically check "overwrite client" for mission makers qol [_controlsGroup, _source] call (_controlsGroup getVariable QFUNC(auto_check_overwrite)); + // refresh priority to update overwrite color if current value is equal to overwrite + [_controlsGroup] call (_controlsGroup getVariable QFUNC(updateUI_locked)); }]; // set setting ui manually to new value diff --git a/addons/settings/fnc_gui_settingList.sqf b/addons/settings/fnc_gui_settingList.sqf index 0d843b7fb..7bb508542 100644 --- a/addons/settings/fnc_gui_settingList.sqf +++ b/addons/settings/fnc_gui_settingList.sqf @@ -47,6 +47,8 @@ _ctrlList ctrlAddEventHandler ["LBSelChanged", { // automatically check "overwrite client" for mission makers qol [_controlsGroup, _source] call (_controlsGroup getVariable QFUNC(auto_check_overwrite)); + // refresh priority to update overwrite color if current value is equal to overwrite + [_controlsGroup] call (_controlsGroup getVariable QFUNC(updateUI_locked)); }]; // set setting ui manually to new value diff --git a/addons/settings/fnc_gui_settingOverwrite.sqf b/addons/settings/fnc_gui_settingOverwrite.sqf index 293ae80c5..b467b24f1 100644 --- a/addons/settings/fnc_gui_settingOverwrite.sqf +++ b/addons/settings/fnc_gui_settingOverwrite.sqf @@ -107,9 +107,11 @@ _controlsGroup setVariable [QFUNC(updateUI_locked), { params ["_controlsGroup"]; private _setting = _controlsGroup getVariable QGVAR(setting); private _priority = TEMP_PRIORITY(_setting); + private _tempValue = TEMP_VALUE(_setting); { private _source = _x getVariable QGVAR(source); + private _sourceValue = TEMP_VALUE_SOURCE(_setting,_source); private _ctrlLocked = _x controlsGroupCtrl IDC_SETTING_LOCKED; if (_source isEqualTo _priority) then { @@ -123,23 +125,26 @@ _controlsGroup setVariable [QFUNC(updateUI_locked), { _ctrlLocked ctrlSetTooltip LLSTRING(applies); }; } else { + private _overwriteEqual = _sourceValue isEqualTo _tempValue; + private _overwriteColor = [COLOR_OVERWRITTEN, COLOR_OVERWRITTEN_EQUAL] select _overwriteEqual; + switch [_source, _priority] do { case ["client", "server"]; case ["mission", "server"]: { _ctrlLocked ctrlSetText ICON_OVERWRITTEN; - _ctrlLocked ctrlSetTextColor COLOR_OVERWRITTEN; - _ctrlLocked ctrlSetTooltip LLSTRING(overwritten_by_server_tooltip); + _ctrlLocked ctrlSetTextColor _overwriteColor; + _ctrlLocked ctrlSetTooltip [LLSTRING(overwritten_by_server_tooltip), LLSTRING(overwritten_by_server_equal_tooltip)] select _overwriteEqual; }; case ["client", "mission"]; case ["server", "mission"]: { _ctrlLocked ctrlSetText ICON_OVERWRITTEN; - _ctrlLocked ctrlSetTextColor COLOR_OVERWRITTEN; - _ctrlLocked ctrlSetTooltip LLSTRING(overwritten_by_mission_tooltip); + _ctrlLocked ctrlSetTextColor _overwriteColor; + _ctrlLocked ctrlSetTooltip [LLSTRING(overwritten_by_mission_tooltip), LLSTRING(overwritten_by_mission_equal_tooltip)] select _overwriteEqual; }; case ["mission", "client"]: { _ctrlLocked ctrlSetText ICON_OVERWRITTEN; - _ctrlLocked ctrlSetTextColor COLOR_OVERWRITTEN; - _ctrlLocked ctrlSetTooltip LLSTRING(overwritten_by_client_tooltip); + _ctrlLocked ctrlSetTextColor _overwriteColor; + _ctrlLocked ctrlSetTooltip [LLSTRING(overwritten_by_client_tooltip), LLSTRING(overwritten_by_client_equal_tooltip)] select _overwriteEqual; }; case ["server", "client"]: { if (isServer) then { diff --git a/addons/settings/fnc_gui_settingSlider.sqf b/addons/settings/fnc_gui_settingSlider.sqf index 40d6a0a5e..ae1cd2089 100644 --- a/addons/settings/fnc_gui_settingSlider.sqf +++ b/addons/settings/fnc_gui_settingSlider.sqf @@ -32,6 +32,8 @@ _ctrlSlider ctrlAddEventHandler ["SliderPosChanged", { // automatically check "overwrite client" for mission makers qol [_controlsGroup, _source] call (_controlsGroup getVariable QFUNC(auto_check_overwrite)); + // refresh priority to update overwrite color if current value is equal to overwrite + [_controlsGroup] call (_controlsGroup getVariable QFUNC(updateUI_locked)); }]; private _ctrlSliderEdit = _controlsGroup controlsGroupCtrl IDC_SETTING_SLIDER_EDIT; @@ -63,6 +65,8 @@ _ctrlSliderEdit ctrlAddEventHandler ["KeyUp", { // automatically check "overwrite client" for mission makers qol [_controlsGroup, _source] call (_controlsGroup getVariable QFUNC(auto_check_overwrite)); + // refresh priority to update overwrite color if current value is equal to overwrite + [_controlsGroup] call (_controlsGroup getVariable QFUNC(updateUI_locked)); }]; _ctrlSliderEdit ctrlAddEventHandler ["KillFocus", { diff --git a/addons/settings/fnc_gui_settingTime.sqf b/addons/settings/fnc_gui_settingTime.sqf index 4cfb9bf19..f6f7da752 100644 --- a/addons/settings/fnc_gui_settingTime.sqf +++ b/addons/settings/fnc_gui_settingTime.sqf @@ -30,6 +30,8 @@ _ctrlSlider ctrlAddEventHandler ["SliderPosChanged", { // automatically check "overwrite client" for mission makers qol [_controlsGroup, _source] call (_controlsGroup getVariable QFUNC(auto_check_overwrite)); + // refresh priority to update overwrite color if current value is equal to overwrite + [_controlsGroup] call (_controlsGroup getVariable QFUNC(updateUI_locked)); }]; { @@ -66,6 +68,8 @@ _ctrlSlider ctrlAddEventHandler ["SliderPosChanged", { // automatically check "overwrite client" for mission makers qol [_controlsGroup, _source] call (_controlsGroup getVariable QFUNC(auto_check_overwrite)); + // refresh priority to update overwrite color if current value is equal to overwrite + [_controlsGroup] call (_controlsGroup getVariable QFUNC(updateUI_locked)); }]; } forEach [ [IDC_SETTING_TIME_HOURS, floor (_currentValue / 3600)], diff --git a/addons/settings/script_component.hpp b/addons/settings/script_component.hpp index d8695cd8a..131fdb723 100644 --- a/addons/settings/script_component.hpp +++ b/addons/settings/script_component.hpp @@ -105,6 +105,7 @@ #define COLOR_APPLIES [0, 0.95, 0, 1] #define COLOR_OVERWRITTEN [0.95, 0, 0, 1] +#define COLOR_OVERWRITTEN_EQUAL [0.95, 0.55, 0, 1] #define COLOR_NEED_RESTART [0.95, 0.95, 0, 1] #define CAN_SET_SERVER_SETTINGS ((isServer || FUNC(whitelisted)) && {!isNull GVAR(server)}) // in single player, as host (local server) or as logged in (not voted) admin connected to a dedicated server @@ -132,11 +133,13 @@ (uiNamespace getVariable QGVAR(serverTemp)) getVariable [setting, [nil, [setting, "server"] call FUNC(priority)]] select 1\ ]; ["client", "mission", "server"] select (_arr find selectMax _arr)}) -#define TEMP_VALUE(setting) ([\ +#define TEMP_VALUE_SOURCE(setting,source) ([\ (uiNamespace getVariable QGVAR(clientTemp)) getVariable [setting, [[setting, "client"] call FUNC(get), nil]] select 0,\ (uiNamespace getVariable QGVAR(missionTemp)) getVariable [setting, [[setting, "mission"] call FUNC(get), nil]] select 0,\ (uiNamespace getVariable QGVAR(serverTemp)) getVariable [setting, [[setting, "server"] call FUNC(get), nil]] select 0\ -] select (["client", "mission", "server"] find TEMP_PRIORITY(setting))) +] select (["client", "mission", "server"] find (source))) + +#define TEMP_VALUE(setting) TEMP_VALUE_SOURCE(setting,TEMP_PRIORITY(setting)) #define ASCII_NEWLINE 10 #define ASCII_CARRIAGE_RETURN 13 diff --git a/addons/settings/stringtable.xml b/addons/settings/stringtable.xml index 11ebdd5e3..0b0ddcdd2 100644 --- a/addons/settings/stringtable.xml +++ b/addons/settings/stringtable.xml @@ -406,12 +406,30 @@ 此项设定被客户端给覆写并仅适用于伺服器。 Esta configuração é sobrescrita pelos clientes e é apenas aplicada no servidor. Этот параметр перезаписан клиентом и применяется исключительно к серверу. - Ta wartość zostałą nadpisana przez klientów i ma zastosowanie tylko na serwerze. + Ta wartość została nadpisana przez klientów i ma zastosowanie tylko na serwerze. Ce paramètre est écrasé par les clients et ne s'applique qu'au serveur. Oyuncular tarafından bu ayarın üstüne yazılmış, ayar sadece sunucuda geçerli. Questa impostazione è sovrascritta dai client e si applica solo al server. Toto nastavení je přepsáno klienty a platí pouze na serveru. + + Overwritten by client with the same value. + Mit gleichem Wert durch Client überschrieben. + Nadpisane przez klienta z taką samą wartością. + Écrasé par le client, avec la même valeur. + + + Overwritten by mission with the same value. + Mit gleichem Wert durch Mission überschrieben. + Nadpisane przez misję z taką samą wartością. + Écrasé par la mission, avec la même valeur. + + + Overwritten by server with the same value. + Mit gleichem Wert durch Server überschrieben. + Nadpisane przez serwer z taką samą wartością. + Écrasé par le serveur, avec la même valeur. + Copy to clipboard In Zwischenablage