using System.Collections.Generic; using BriarQueen.Framework.Managers.Player.Data; using BriarQueen.Framework.Registries; using UnityEditor; using UnityEngine; namespace BriarQueen.Editor.Drawers.Registries { [CustomEditor(typeof(ItemRegistry))] public class ItemRegistryFill : UnityEditor.Editor { public override void OnInspectorGUI() { DrawDefaultInspector(); EditorGUILayout.Space(); if (GUILayout.Button("Discover Item Assets")) { Populate((ItemRegistry)target); } } private static void Populate(ItemRegistry registry) { string[] guids = AssetDatabase.FindAssets("t:ItemDataSo"); var puzzleSlots = new List(); var pickupItems = new List(); var environmentInteractables = new List(); foreach (string guid in guids) { string path = AssetDatabase.GUIDToAssetPath(guid); var entry = AssetDatabase.LoadAssetAtPath(path); if (entry == null) continue; switch (entry.IdType) { case ItemDataSo.ItemIdType.PuzzleSlot: puzzleSlots.Add(entry); break; case ItemDataSo.ItemIdType.Pickup: pickupItems.Add(entry); break; case ItemDataSo.ItemIdType.Environment: environmentInteractables.Add(entry); break; } } puzzleSlots.Sort((a, b) => string.CompareOrdinal(a.name, b.name)); pickupItems.Sort((a, b) => string.CompareOrdinal(a.name, b.name)); environmentInteractables.Sort((a, b) => string.CompareOrdinal(a.name, b.name)); Undo.RecordObject(registry, "Discover Item Assets"); registry.SetDiscoveredEntries(puzzleSlots, pickupItems, environmentInteractables); EditorUtility.SetDirty(registry); AssetDatabase.SaveAssets(); Debug.Log( $"[ItemRegistry] Discovery complete. Puzzle Slots: {puzzleSlots.Count}, Pickup Items: {pickupItems.Count}, Environment Interactables: {environmentInteractables.Count}"); } } }