48 lines
1.3 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|