using System.Collections.Generic; using BriarQueen.Data.Identifiers; using BriarQueen.Framework.Managers.Achievements.Data; using UnityEngine; namespace BriarQueen.Framework.Registries { [CreateAssetMenu(menuName = "Briar Queen/Registries/New Achievement Registry", fileName = "Achievement Registry")] public class AchievementRegistry : ScriptableObject { [SerializeField] private List _achievementSos; private Dictionary _achievementDictionary; private void EnsureInitialized() { if (_achievementDictionary != null) return; RebuildLookup(); } private void RebuildLookup() { _achievementDictionary = new Dictionary(); RegistryLookupBuilder.AddEntries( _achievementDictionary, _achievementSos, this, nameof(AchievementRegistry), "Achievements", nameof(AchievementSo.Achievement), entry => entry.Achievement, entry => entry); } public bool TryGetAchievement(AchievementID identifier, out AchievementSo achievement) { EnsureInitialized(); return _achievementDictionary.TryGetValue(identifier, out achievement); } public IEnumerable GetAchievements() { EnsureInitialized(); return _achievementDictionary.Values; } } }