RiftMayhem/Assets/Scripts/AbilitySystem/StatusEffectIndexer.cs

60 lines
1.6 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class StatusEffectIndexer : MonoBehaviour
{
#region Singleton
private static StatusEffectIndexer _instance;
// Public reference to the singleton instance
public static StatusEffectIndexer Instance
{
get
{
// If the instance doesn't exist, try to find it in the scene
if (_instance == null)
{
_instance = FindObjectOfType<StatusEffectIndexer>();
// If it's still null, create a new GameObject and add the component
if (_instance == null)
{
GameObject singletonObject = new GameObject(typeof(StatusEffectIndexer).Name);
_instance = singletonObject.AddComponent<StatusEffectIndexer>();
}
}
return _instance;
}
}
#endregion
public List<StatusEffect> StatusEffects = new List<StatusEffect>();
protected void Awake()
{
// Ensure there's only one instance
if (_instance != null && _instance != this)
{
Destroy(gameObject);
return;
}
// If this is the first instance, set it as the singleton
_instance = this;
DontDestroyOnLoad(gameObject);
}
private void OnValidate()
{
if (StatusEffects == null) return;
foreach (StatusEffect statusEffect in Resources.FindObjectsOfTypeAll<StatusEffect>())
{
if (StatusEffects.Contains(statusEffect)) continue;
StatusEffects.Add(statusEffect);
}
}
}