using System.Collections.Generic; using Godot; namespace Babushka.scripts.CSharp.Events; [GlobalClass] [Tool] public partial class EventResource : Resource { [Export] private string Name { get { return ResourceName; } set { ResourceName = value; } } [Export] private bool _showLog; [ExportToolButton("Raise")] Callable _raiseAction => Callable.From(Raise); private List _eventListeners = new (); public void RegisterListener(EventListener listener) { if(_showLog) GD.Print("Registering listener " + listener); _eventListeners.Add(listener); } public void UnregisterListener(EventListener listener) { if(_showLog) GD.Print("Unregistering listener " + listener); _eventListeners.Remove(listener); } public void Raise() { if(_showLog) GD.Print("Raising event: " + Name); foreach (var eventListener in _eventListeners) { eventListener.RaiseEvent(); } } }