using System.Collections.Generic; using SpellBoundAR.Items.Inventories; using UnityEditor; using UnityEngine; namespace SpellBoundAR.Items.Editor { public static class InventoryEditorHelpers { private const float NameColumnWidth = 150f; private const float QuantityColumnWidth = 75f; private const float ViewsColumnWidth = 75f; public static void DrawSavedInventory(SavedInventory savedInventory) { GUILayout.Space(5); if (savedInventory == null) { GUILayout.Label("Inventory is null."); return; } List inventoryEntries = savedInventory.GetAllEntries(); if (inventoryEntries is not {Count: > 0}) { GUILayout.Label("Inventory is empty."); return; } EditorGUILayout.BeginHorizontal(); GUILayout.Label("NAME", GUILayout.MaxWidth(NameColumnWidth)); GUILayout.Label("QUANTITY", GUILayout.MaxWidth(QuantityColumnWidth)); GUILayout.Label("VIEWS", GUILayout.MaxWidth(ViewsColumnWidth)); EditorGUILayout.EndHorizontal(); foreach (IInventoryEntry entry in inventoryEntries) { if (entry == null) continue; EditorGUILayout.BeginHorizontal(); IItemTypeData itemTypeData = entry.ItemTypeData; GUILayout.Label(itemTypeData != null ? itemTypeData.Name : "NULL", GUILayout.MaxWidth(NameColumnWidth)); GUILayout.Label(entry.Quantity.ToString(), GUILayout.MaxWidth(QuantityColumnWidth)); GUILayout.Label(entry.Views.ToString(), GUILayout.MaxWidth(ViewsColumnWidth)); if (GUILayout.Button("+1", GUILayout.MaxWidth(30))) { savedInventory.Add(itemTypeData, 1); return; } if (GUILayout.Button("-1", GUILayout.MaxWidth(30))) { savedInventory.Remove(itemTypeData, 1); return; } if (GUILayout.Button("Remove All", GUILayout.MaxWidth(90))) { savedInventory.RemoveAll(itemTypeData); return; } EditorGUILayout.EndHorizontal(); } } } }