✨ Added event payload and Valuechange-handling
This commit is contained in:
@@ -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"
|
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
using System;
|
|
||||||
using Godot;
|
using Godot;
|
||||||
using Godot.Collections;
|
using Godot.Collections;
|
||||||
|
|
||||||
@@ -24,6 +23,26 @@ public partial class EventListener : Node
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
[Signal] public delegate void EventRaisedEventHandler();
|
[Signal] public delegate void EventRaisedEventHandler();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The signal that is triggered when this listener is called by one of the <see cref="EventListener._eventResources"/>.
|
||||||
|
/// </summary>
|
||||||
|
[Signal] public delegate void EventRaisedWithPayloadEventHandler(Variant payload);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A signal that is triggered when the payload of one of the <see cref="EventListener._eventResources"/> changed.
|
||||||
|
/// </summary>
|
||||||
|
[Signal] public delegate void PayloadChangedEventHandler(Variant payload, Variant oldPayload);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A signal that is triggered when the payload of one of the <see cref="EventListener._eventResources"/> changed.
|
||||||
|
/// </summary>
|
||||||
|
[Signal] public delegate void NewEventPayloadEventHandler(Variant payload);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A signal that is triggered when the payload of one of the <see cref="EventListener._eventResources"/> changed.
|
||||||
|
/// </summary>
|
||||||
|
[Signal] public delegate void OldEventPayloadEventHandler(Variant oldPayload);
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Subscribes to all <see cref="EventResource"/>s present in the <see cref="_eventResources"/> array.
|
/// Subscribes to all <see cref="EventResource"/>s present in the <see cref="_eventResources"/> array.
|
||||||
@@ -53,10 +72,24 @@ public partial class EventListener : Node
|
|||||||
/// Called by a <see cref="EventResource"/>s from the <see cref="_eventResources"/> array.
|
/// Called by a <see cref="EventResource"/>s from the <see cref="_eventResources"/> array.
|
||||||
/// Propagates the event by emitting <see cref="EventRaised"/> signal.
|
/// Propagates the event by emitting <see cref="EventRaised"/> signal.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Invoke()
|
public void EventInvoked(Variant payload)
|
||||||
{
|
{
|
||||||
if(_showLog)
|
if(_showLog)
|
||||||
GD.Print("Event Raised on: " + Name);
|
GD.Print("Event Raised on: " + Name);
|
||||||
EmitSignal(SignalName.EventRaised);
|
EmitSignal(SignalName.EventRaised);
|
||||||
|
EmitSignal(SignalName.EventRaisedWithPayload, payload);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Called by a <see cref="EventResource"/>s from the <see cref="_eventResources"/> array.
|
||||||
|
/// Propagates the event by emitting <see cref="EventRaised"/> signal.
|
||||||
|
/// </summary>
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -15,6 +15,24 @@ public partial class EventResource : Resource
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
[Export] private bool _showLog;
|
[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;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Raise-Button Call with Editor Export for easier debugging.
|
/// Raise-Button Call with Editor Export for easier debugging.
|
||||||
/// Beware: This will only work with custom event listeners that register at edit-time.
|
/// Beware: This will only work with custom event listeners that register at edit-time.
|
||||||
@@ -56,7 +74,22 @@ public partial class EventResource : Resource
|
|||||||
|
|
||||||
foreach (var eventListener in _eventListeners)
|
foreach (var eventListener in _eventListeners)
|
||||||
{
|
{
|
||||||
eventListener.Invoke();
|
eventListener.EventInvoked(_payload);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Called when the Payload value changed.
|
||||||
|
/// </summary>
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user