using System; using PrefsGUI.Kvs; using RapidGUI; using UnityEngine; namespace PrefsGUI.RapidGUI { public static class PrefsParamOuterInnerExtension { public static bool DoGUI(this PrefsParamOuterInner prefs, string label = null) { return prefs.DoGUIStandard((v) => RGUI.Field(v, label ?? prefs.key)); } public static bool DoGUIStandard(this PrefsParamOuterInner prefs, Func func, bool enableDefaultButton = true) { var synced = prefs.Synced; if (synced) RGUI.BeginColor(PrefsParam.syncedColor); var changed = false; using (new GUILayout.HorizontalScope()) { changed = prefs.DoGUICheckChanged(func); if (enableDefaultButton) { changed |= prefs.DoGUIDefaultButton(); } } if (synced) RGUI.EndColor(); return changed; } public static bool DoGUICheckChanged(this PrefsParamOuterInner prefs, Func func) { var prev = prefs.Get(); var next = func(prev); return prefs.Set(next); } public static bool DoGUIDefaultButton(this PrefsParamOuterInner prefs) { var ret = GUIComponent.DoGUIDefaultButton(prefs.IsDefault); if (ret) { prefs.ResetToDefault(); } return ret; } } }