using UnityEngine;
namespace PrefsGUI
{
///
/// Define Outer Interface
///
public abstract class PrefsParamOuter : PrefsParam
{
[SerializeField]
protected TOuter defaultValue;
public TOuter DefaultValue => defaultValue;
protected PrefsParamOuter(string key, TOuter defaultValue = default) : base(key)
{
this.defaultValue = defaultValue;
}
public static implicit operator TOuter(PrefsParamOuter me)
{
return me.Get();
}
#region abstract
public abstract TOuter Get();
/// true if the value is changed
public abstract bool Set(TOuter v);
#endregion
#region override
public override void ResetToDefault() => Set(DefaultValue);
#endregion
}
}