using System.Collections.Generic; using BriarQueen.Framework.Managers.Audio.Data; using NaughtyAttributes; using UnityEngine; namespace BriarQueen.Framework.Registries { [CreateAssetMenu(menuName = "Briar Queen/Registries/New Audio Registry", fileName = "New Audio Registry")] public class AudioRegistry : ScriptableObject { [ReorderableList] [SerializeField] private List _audioFiles; private Dictionary _audioFileDict; private void EnsureInitialized() { if (_audioFileDict != null) return; RebuildLookup(); } private void RebuildLookup() { _audioFileDict = new Dictionary(); RegistryLookupBuilder.AddEntries( _audioFileDict, _audioFiles, this, nameof(AudioRegistry), "Audio Files", "UniqueID", entry => entry.UniqueID, entry => entry, entry => RegistryLookupBuilder.HasNonEmptyKey(entry.UniqueID)); } public bool TryGetAudio(string audioName, out AudioFileSo audioFile) { EnsureInitialized(); return _audioFileDict.TryGetValue(audioName, out audioFile); } } }