using System;
using PrefsGUI.Utility;
namespace PrefsGUI
{
///
/// PrefsParam for user type that has new(), serializable by Unity(JsonUtility)
///
[Serializable]
public class PrefsAny : PrefsParamOuterInner
where TOuter : new()
{
public PrefsAny(string key, TOuter defaultValue = default) : base(key, defaultValue)
{
this.defaultValue ??= new TOuter();
}
protected override string ToInner(TOuter outerV) => PrefsAnyUtility.ToInner(outerV);
protected override TOuter ToOuter(string innerV) => PrefsAnyUtility.ToOuter(innerV);
}
public static class PrefsAnyUtility
{
public static string ToInner(TOuter outerV) => (outerV == null) ? "" : JsonUtilityEx.ToJson(outerV);
public static TOuter ToOuter(string innerV) => string.IsNullOrEmpty(innerV) ? default : JsonUtilityEx.FromJson(innerV);
public static bool IsEqual(TOuter lhs, TOuter rhs) => ToInner(lhs) == ToInner(rhs);
}
}