Heroes_of_Hiis/Assets/Rotary Heart/SerializableDictionaryLite/Editor/PreferencesWindow.cs

85 lines
2.7 KiB
C#
Raw Normal View History

using UnityEditor;
using UnityEngine;
namespace RotaryHeart.Lib.SerializableDictionary
{
public class PreferencesWindow
{
#region GUIContent
static readonly GUIContent gui_pagesTitle = new GUIContent("Pages", "Section that has all the pages settings for the drawer");
static readonly GUIContent gui_showPages = new GUIContent("Show Pages", "Should the drawer be divided in pages?");
static readonly GUIContent gui_showSizes = new GUIContent("Show Sizes", "Should the dictionary show the size on the title bar?");
static readonly GUIContent gui_pageCount = new GUIContent("Page Count", "How many elements per page are going to be drawn");
#endregion
// Have we loaded the prefs yet
private static bool prefsLoaded = false;
//Default values
private static bool showPages;
private static bool showSize;
private static int pageCount;
#if UNITY_2018_3_OR_NEWER
private class MyPrefSettingsProvider : SettingsProvider
{
public MyPrefSettingsProvider(string path, SettingsScope scopes = SettingsScope.Project)
: base(path, scopes)
{ }
public override void OnGUI(string searchContext)
{
PreferencesGUI();
}
}
[SettingsProvider]
static SettingsProvider MyNewPrefCode()
{
return new MyPrefSettingsProvider("Preferences/RHSD");
}
#else
// Add preferences section named "My Preferences" to the Preferences Window
[PreferenceItem("RHSD")]
#endif
public static void PreferencesGUI()
{
if (!prefsLoaded)
{
showPages = Constants.ShowPages;
showSize = Constants.ShowSize;
pageCount = Constants.PageCount;
prefsLoaded = true;
}
EditorGUILayout.LabelField(gui_pagesTitle, EditorStyles.boldLabel);
EditorGUILayout.Space();
showSize = EditorGUILayout.Toggle(gui_showSizes, showSize);
showPages = EditorGUILayout.Toggle(gui_showPages, showPages);
GUI.enabled = showPages;
pageCount = Mathf.Clamp(EditorGUILayout.IntField(gui_pageCount, pageCount), 5, int.MaxValue);
GUI.enabled = true;
if (GUI.changed)
{
Constants.ShowPages = showPages;
Constants.ShowSize = showSize;
Constants.PageCount = pageCount;
}
GUILayout.FlexibleSpace();
if (GUILayout.Button("Restore Default"))
{
Constants.RestoreDefaults();
prefsLoaded = false;
}
}
}
}