Files
A-Fairytale-Gone-Bad-Briar-…/Assets/Scripts/Framework/Registries/AudioRegistry.cs

48 lines
1.3 KiB
C#

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<AudioFileSo> _audioFiles;
private Dictionary<string, AudioFileSo> _audioFileDict;
private void EnsureInitialized()
{
if (_audioFileDict != null)
return;
RebuildLookup();
}
private void RebuildLookup()
{
_audioFileDict = new Dictionary<string, AudioFileSo>();
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);
}
}
}