diff --git a/resources/events/test2.tres b/resources/events/test2.tres deleted file mode 100644 index 14b8ba4..0000000 --- a/resources/events/test2.tres +++ /dev/null @@ -1,8 +0,0 @@ -[gd_resource type="Resource" script_class="EventResource" load_steps=2 format=3 uid="uid://bgfxakxxfmoxs"] - -[ext_resource type="Script" uid="uid://ci3t5mvnopntg" path="res://scripts/CSharp/Low Code/Events/EventResource.cs" id="1_jm77s"] - -[resource] -script = ExtResource("1_jm77s") -_showLog = true -metadata/_custom_type_script = "uid://ci3t5mvnopntg" diff --git a/scripts/CSharp/Low Code/Events/EventListener.cs b/scripts/CSharp/Low Code/Events/EventListener.cs index 2bf3693..caa2801 100644 --- a/scripts/CSharp/Low Code/Events/EventListener.cs +++ b/scripts/CSharp/Low Code/Events/EventListener.cs @@ -1,4 +1,3 @@ -using System; using Godot; using Godot.Collections; @@ -23,6 +22,26 @@ public partial class EventListener : Node /// The signal that is triggered when this listener is called by one of the . /// [Signal] public delegate void EventRaisedEventHandler(); + + /// + /// The signal that is triggered when this listener is called by one of the . + /// + [Signal] public delegate void EventRaisedWithPayloadEventHandler(Variant payload); + + /// + /// A signal that is triggered when the payload of one of the changed. + /// + [Signal] public delegate void PayloadChangedEventHandler(Variant payload, Variant oldPayload); + + /// + /// A signal that is triggered when the payload of one of the changed. + /// + [Signal] public delegate void NewEventPayloadEventHandler(Variant payload); + + /// + /// A signal that is triggered when the payload of one of the changed. + /// + [Signal] public delegate void OldEventPayloadEventHandler(Variant oldPayload); /// @@ -53,10 +72,24 @@ public partial class EventListener : Node /// Called by a s from the array. /// Propagates the event by emitting signal. /// - public void Invoke() + public void EventInvoked(Variant payload) { if(_showLog) GD.Print("Event Raised on: " + Name); EmitSignal(SignalName.EventRaised); + EmitSignal(SignalName.EventRaisedWithPayload, payload); + } + + /// + /// Called by a s from the array. + /// Propagates the event by emitting signal. + /// + public void EventPayloadChanged(Variant payload, Variant oldPayload) + { + if(_showLog) + GD.Print($"Calling Event Payload Changed Signals on: " + Name); + EmitSignal(SignalName.PayloadChanged, payload, oldPayload); + EmitSignal(SignalName.NewEventPayload, payload); + EmitSignal(SignalName.OldEventPayload, oldPayload); } } \ No newline at end of file diff --git a/scripts/CSharp/Low Code/Events/EventResource.cs b/scripts/CSharp/Low Code/Events/EventResource.cs index 1560c00..4811348 100644 --- a/scripts/CSharp/Low Code/Events/EventResource.cs +++ b/scripts/CSharp/Low Code/Events/EventResource.cs @@ -14,6 +14,24 @@ public partial class EventResource : Resource /// Log into console when this event resource is adding or removing listeners, and when it's raised. /// [Export] private bool _showLog; + + [Export] + public Variant Payload + { + get { return _payload; } + set + { + if (!_payload.Equals(value)) + { + _lastPayload = _payload; + _payload = value; + ValueChangeHandler(); + } + } + } + + private Variant _payload; + private Variant _lastPayload; /// /// Raise-Button Call with Editor Export for easier debugging. @@ -56,7 +74,22 @@ public partial class EventResource : Resource foreach (var eventListener in _eventListeners) { - eventListener.Invoke(); + eventListener.EventInvoked(_payload); } } + + /// + /// Called when the Payload value changed. + /// + public void ValueChangeHandler() + { + if(_showLog) + GD.Print($"Event payload changed from {_lastPayload} to {_payload} on event resource: " + ResourcePath.GetFile().TrimSuffix(".tres")); + + foreach (var eventListener in _eventListeners) + { + eventListener.EventPayloadChanged(_payload, _lastPayload); + } + } + } \ No newline at end of file