You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
44 lines
1.1 KiB
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<EventListener> _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();
|
|
}
|
|
}
|
|
} |