diff options
Diffstat (limited to 'Thronefall_1_57/Thronefall/I2.Loc/LocalizationParamsManager.cs')
| -rw-r--r-- | Thronefall_1_57/Thronefall/I2.Loc/LocalizationParamsManager.cs | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/Thronefall_1_57/Thronefall/I2.Loc/LocalizationParamsManager.cs b/Thronefall_1_57/Thronefall/I2.Loc/LocalizationParamsManager.cs new file mode 100644 index 0000000..2690bf1 --- /dev/null +++ b/Thronefall_1_57/Thronefall/I2.Loc/LocalizationParamsManager.cs @@ -0,0 +1,97 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace I2.Loc; + +public class LocalizationParamsManager : MonoBehaviour, ILocalizationParamsManager +{ + [Serializable] + public struct ParamValue + { + public string Name; + + public string Value; + } + + [SerializeField] + public List<ParamValue> _Params = new List<ParamValue>(); + + public bool _IsGlobalManager; + + public string GetParameterValue(string ParamName) + { + if (_Params != null) + { + int i = 0; + for (int count = _Params.Count; i < count; i++) + { + if (_Params[i].Name == ParamName) + { + return _Params[i].Value; + } + } + } + return null; + } + + public void SetParameterValue(string ParamName, string ParamValue, bool localize = true) + { + bool flag = false; + int i = 0; + for (int count = _Params.Count; i < count; i++) + { + if (_Params[i].Name == ParamName) + { + ParamValue value = _Params[i]; + value.Value = ParamValue; + _Params[i] = value; + flag = true; + break; + } + } + if (!flag) + { + _Params.Add(new ParamValue + { + Name = ParamName, + Value = ParamValue + }); + } + if (localize) + { + OnLocalize(); + } + } + + public void OnLocalize() + { + Localize component = GetComponent<Localize>(); + if (component != null) + { + component.OnLocalize(Force: true); + } + } + + public virtual void OnEnable() + { + if (_IsGlobalManager) + { + DoAutoRegister(); + } + } + + public void DoAutoRegister() + { + if (!LocalizationManager.ParamManagers.Contains(this)) + { + LocalizationManager.ParamManagers.Add(this); + LocalizationManager.LocalizeAll(Force: true); + } + } + + public void OnDisable() + { + LocalizationManager.ParamManagers.Remove(this); + } +} |
