From f649a63a77493100b6decb0500e39b5333fe5a99 Mon Sep 17 00:00:00 2001 From: "Tristan B. Kildaire" Date: Sun, 16 Jan 2022 14:32:00 +0200 Subject: [PATCH] Re-worked event system --- source/eventy/engine.d | 36 ++++++++++++++++++++++++++++++++---- source/eventy/signal.d | 16 ++++++---------- 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/source/eventy/engine.d b/source/eventy/engine.d index 5e5ca9e..a1f0443 100644 --- a/source/eventy/engine.d +++ b/source/eventy/engine.d @@ -1,7 +1,7 @@ module eventy.engine; import eventy.queues : Queue; -import eventy.signal : Signal, EventHandler; +import eventy.signal : Signal; import eventy.event : Event; import std.container.dlist; @@ -26,10 +26,38 @@ unittest engine.start(); + /** + * Let the event engine know what typeIDs are + * allowed to be queued + */ engine.addQueue(1); engine.addQueue(2); - Signal j = new Signal([1,2], &runner); + + /** + * Create a new Signal Handler that will handles + * event types `1` and `2` with the given `handler()` + * function + */ + class SignalHandler1 : Signal + { + this() + { + super([1,2]); + } + + public override void handler(Event e) + { + import std.stdio; + writeln("Running event", e.id); + } + } + + /** + * Tell the event engine that I want to register + * the following handler for its queues `1` and `2` + */ + Signal j = new SignalHandler1(); engine.addSignalHandler(j); Event eTest = new Event(1); @@ -200,8 +228,8 @@ public final class Engine : Thread public void worker() { - EventHandler handler = signal.getHandler(); - handler(e); + signal.handler(e); + //handler(e); } }; diff --git a/source/eventy/signal.d b/source/eventy/signal.d index 9fce776..534536b 100644 --- a/source/eventy/signal.d +++ b/source/eventy/signal.d @@ -9,20 +9,19 @@ import eventy.event : Event; * which means that it contains an associated function to be run * on handling of a given Event */ -alias EventHandler = void function(Event); +//alias EventHandler = void function(Event); -public class Signal +public abstract class Signal { /* TypeIDs this signal handler associates with */ private ulong[] typeIDs; /* Signal handler */ - private EventHandler handler; + //private EventHandler handler; - this(ulong[] typeIDs, EventHandler handler) + this(ulong[] typeIDs) { this.typeIDs = typeIDs; - this.handler = handler; } /** @@ -53,8 +52,5 @@ public class Signal } - public EventHandler getHandler() - { - return handler; - } -} \ No newline at end of file + public abstract void handler(Event); +}