using SpellBoundAR.Items.Inventories; using UnityEditor; using UnityEngine; namespace SpellBoundAR.Items.Editor { [CustomEditor(typeof(SavedInventoryScriptableObject), true)] public class SavedInventoryScriptableObjectInspector : UnityEditor.Editor { [SerializeField] public Object item; private SavedInventoryScriptableObject _savedInventoryMonoBehaviour; private void OnEnable() { _savedInventoryMonoBehaviour = (SavedInventoryScriptableObject) target; } public override void OnInspectorGUI() { base.OnInspectorGUI(); GUILayout.BeginHorizontal(); item = EditorGUILayout.ObjectField(GUIContent.none, item, typeof(IItemTypeData), true); IItemTypeData itemTypeData = item ? (IItemTypeData) item : null; SavedInventory savedInventory = _savedInventoryMonoBehaviour ? _savedInventoryMonoBehaviour.SavedInventory : null; EditorGUI.BeginDisabledGroup(savedInventory == null || itemTypeData == null); if (GUILayout.Button("+1", GUILayout.MaxWidth(30)) && savedInventory != null) savedInventory.Add(itemTypeData, 1); if (GUILayout.Button("-1", GUILayout.MaxWidth(30)) && savedInventory != null) savedInventory.Remove(itemTypeData, 1); if (GUILayout.Button("Remove All", GUILayout.MaxWidth(90)) && savedInventory != null) savedInventory.RemoveAll(itemTypeData); EditorGUI.EndDisabledGroup(); GUILayout.EndHorizontal(); InventoryEditorHelpers.DrawSavedInventory(_savedInventoryMonoBehaviour.SavedInventory); EditorGUI.BeginDisabledGroup(savedInventory == null); if (GUILayout.Button("Clear") && savedInventory != null) savedInventory.Clear(); EditorGUI.EndDisabledGroup(); } } }