90 lines
2.5 KiB
C#
90 lines
2.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace I2.Loc
|
|
{
|
|
public interface ILocalizationParamsManager
|
|
{
|
|
string GetParameterValue( string Param );
|
|
}
|
|
|
|
public class LocalizationParamsManager : MonoBehaviour, ILocalizationParamsManager
|
|
{
|
|
[Serializable]
|
|
public struct ParamValue
|
|
{
|
|
public string Name, Value;
|
|
|
|
}
|
|
|
|
[SerializeField]
|
|
public List<ParamValue> _Params = new List<ParamValue>();
|
|
|
|
public bool _IsGlobalManager;
|
|
|
|
public string GetParameterValue( string ParamName )
|
|
{
|
|
if (_Params != null)
|
|
{
|
|
for (int i = 0, imax = _Params.Count; i < imax; ++i)
|
|
if (_Params[i].Name == ParamName)
|
|
return _Params[i].Value;
|
|
}
|
|
return null; // not found
|
|
}
|
|
|
|
public void SetParameterValue( string ParamName, string ParamValue, bool localize = true )
|
|
{
|
|
bool setted = false;
|
|
for (int i = 0, imax = _Params.Count; i < imax; ++i)
|
|
if (_Params[i].Name == ParamName)
|
|
{
|
|
var temp = _Params[i];
|
|
temp.Value = ParamValue;
|
|
_Params[i] = temp;
|
|
setted = true;
|
|
break;
|
|
}
|
|
if (!setted)
|
|
_Params.Add(new ParamValue { Name = ParamName, Value = ParamValue });
|
|
|
|
if (localize)
|
|
OnLocalize();
|
|
}
|
|
|
|
public void OnLocalize()
|
|
{
|
|
var loc = GetComponent<Localize>();
|
|
if (loc != null)
|
|
loc.OnLocalize(true);
|
|
}
|
|
|
|
public virtual void OnEnable()
|
|
{
|
|
if (_IsGlobalManager)
|
|
DoAutoRegister();
|
|
}
|
|
|
|
//[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
|
|
//public void AutoStart()
|
|
//{
|
|
// if (_AutoRegister)
|
|
// DoAutoRegister();
|
|
//}
|
|
|
|
public void DoAutoRegister()
|
|
{
|
|
if (!LocalizationManager.ParamManagers.Contains(this))
|
|
{
|
|
LocalizationManager.ParamManagers.Add(this);
|
|
LocalizationManager.LocalizeAll(true);
|
|
}
|
|
}
|
|
|
|
public void OnDisable()
|
|
{
|
|
LocalizationManager.ParamManagers.Remove(this);
|
|
}
|
|
}
|
|
} |