using System;
using System.Diagnostics.CodeAnalysis;
using UnityEngine.Assertions;
namespace PrefsGUI
{
///
/// Combination of PrefsParams
///
[Obsolete("PrefsSet is obsolete, consider using PrefsAny instead.")]
[SuppressMessage("ReSharper", "FieldCanBeMadeReadOnly.Global")]
public abstract class PrefsSet
where TPrefs0 : PrefsParamOuter
where TPrefs1 : PrefsParamOuter
{
public readonly string key;
public readonly string[] paramNames;
public TPrefs0 prefs0;
public TPrefs1 prefs1;
protected virtual string GenerateParamKey(string keyString, string paramName) => $"{keyString}_{paramName}";
protected PrefsSet(string key, TOuter0 default0, TOuter1 default1, string paramName0, string paramName1)
{
this.key = key;
prefs0 = Construct(key, paramName0, default0);
prefs1 = Construct(key, paramName1, default1);
paramNames = new[] {paramName0, paramName1};
}
TPrefs Construct(string keyString, string postfix, TOuter defaultValue)
{
var ctor = typeof(TPrefs).GetConstructor(new[] { typeof(string), typeof(TOuter) });
Assert.IsNotNull(ctor);
return (TPrefs)ctor.Invoke(new object[] { GenerateParamKey(keyString, postfix), defaultValue });
}
}
}