Afterparty/Assets/Scripts/Events/GameEvent.cs
2026-01-11 17:04:23 +03:00

34 lines
951 B
C#

using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(menuName = "Game Event", fileName = "New Game Event")]
public class GameEvent : ScriptableObject
{
private readonly List<GameEventListener> _listeners = new List<GameEventListener>();
public void Raise()
{
// Проходимся по списку в обратном порядке, на случай если слушатель удалится во время вызова
for (int i = _listeners.Count - 1; i >= 0; i--)
{
_listeners[i].OnEventRaised();
}
}
public void RegisterListener(GameEventListener listener)
{
if (!_listeners.Contains(listener))
{
_listeners.Add(listener);
}
}
public void UnregisterListener(GameEventListener listener)
{
if (_listeners.Contains(listener))
{
_listeners.Remove(listener);
}
}
}