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); } }