using EinSoftworks.Events; using Godot; namespace Voider; /// /// Autoload singleton that provides access to the ConfigurableEventManager /// public partial class EventManager : Node { private static EventManager _instance; public static EventManager Instance => _instance; private ConfigurableEventManager _eventManager; public override void _Ready() { _instance = this; _eventManager = new ConfigurableEventManager(); } /// /// Raise a game event using the resource's EventName /// public void RaiseEvent(GameEventResource eventResource) { if (eventResource?.EventName != null) { _eventManager.Raise(eventResource.EventName); } } /// /// Raise a game event by name /// public void RaiseEvent(string eventName) { _eventManager.Raise(eventName); } /// /// Subscribe to a game event using the resource's EventName /// public void Subscribe(GameEventResource eventResource, System.Action callback) { if (eventResource?.EventName != null) { _eventManager.Subscribe(eventResource.EventName, callback); } } /// /// Subscribe to a game event by name /// public void Subscribe(string eventName, System.Action callback) { _eventManager.Subscribe(eventName, callback); } /// /// Unsubscribe from a game event using the resource's EventName /// public void Unsubscribe(GameEventResource eventResource, System.Action callback) { if (eventResource?.EventName != null) { _eventManager.Unsubscribe(eventResource.EventName, callback); } } /// /// Unsubscribe from a game event by name /// public void Unsubscribe(string eventName, System.Action callback) { _eventManager.Unsubscribe(eventName, callback); } }