Implemented first version of EventResources
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
using Godot;
|
||||
|
||||
namespace Babushka.scripts.CSharp.Events;
|
||||
|
||||
public partial class EventCaller : Node
|
||||
{
|
||||
[Export] EventResource eventResource;
|
||||
|
||||
public void RaiseEvent()
|
||||
{
|
||||
eventResource.Raise();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://b5dotkx17gvxg
|
||||
@@ -0,0 +1,28 @@
|
||||
using Godot;
|
||||
|
||||
namespace Babushka.scripts.CSharp.Events;
|
||||
|
||||
public partial class EventListener : Node
|
||||
{
|
||||
[Export] private EventResource _eventResource;
|
||||
[Export] private bool _showLog;
|
||||
|
||||
[Signal] public delegate void EventRaisedEventHandler();
|
||||
|
||||
public override void _EnterTree()
|
||||
{
|
||||
_eventResource.RegisterListener(this);
|
||||
}
|
||||
|
||||
public override void _ExitTree()
|
||||
{
|
||||
_eventResource.UnregisterListener(this);
|
||||
}
|
||||
|
||||
public void RaiseEvent()
|
||||
{
|
||||
if(_showLog)
|
||||
GD.Print("Event Raised on: " + Name);
|
||||
EmitSignal(SignalName.EventRaised);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://bc6uaaxsx5k5p
|
||||
@@ -0,0 +1,44 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://ci3t5mvnopntg
|
||||
Reference in New Issue
Block a user