69 lines
2.4 KiB
C#
69 lines
2.4 KiB
C#
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<ItemDataSo>();
|
|
var pickupItems = new List<ItemDataSo>();
|
|
var environmentInteractables = new List<ItemDataSo>();
|
|
|
|
foreach (string guid in guids)
|
|
{
|
|
string path = AssetDatabase.GUIDToAssetPath(guid);
|
|
var entry = AssetDatabase.LoadAssetAtPath<ItemDataSo>(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}");
|
|
}
|
|
}
|
|
} |