]> git.deb.at Git - rhonda/impostor.git/commitdiff
Fixes #87 - Adds support for IEvent / IGameEvent type of EventListeners
authorAeonLucid <aeonlucid@outlook.com>
Mon, 26 Oct 2020 18:20:56 +0000 (19:20 +0100)
committerAeonLucid <aeonlucid@outlook.com>
Mon, 26 Oct 2020 18:20:56 +0000 (19:20 +0100)
src/Impostor.Api/Events/EventPriority.cs
src/Impostor.Plugins.Example/Handlers/GameEventListener.cs
src/Impostor.Server/Events/EventManager.cs

index 641f4aa96a3ca5501d1bb2cb0c25007f32ac202c..7acdbebfa1e4d79bb8805618d55982db02e0d790 100644 (file)
@@ -7,6 +7,6 @@
         Normal = 2,
         High = 3,
         Highest = 4,
-        Monitor = 5
+        Monitor = 5,
     }
-}
\ No newline at end of file
+}
index 409ec4fb201054a1f26d25bd24de09827c89042f..fe06d51ff828c1f8419067f033758856396d2bf4 100644 (file)
@@ -5,6 +5,12 @@ namespace Impostor.Plugins.Example.Handlers
 {
     public class GameEventListener : IEventListener
     {
+        [EventListener(EventPriority.Monitor)]
+        public void OnGame(IGameEvent e)
+        {
+            Console.WriteLine(e.GetType().Name + " triggered");
+        }
+
         [EventListener]
         public void OnGameCreated(IGameCreatedEvent e)
         {
index b39632e18d3a8f7c25f8c14e9a673b5dacfb86f1..cb5866b747c26bc692aed502eba4c52a64e41d37 100644 (file)
@@ -91,11 +91,15 @@ namespace Impostor.Server.Events
         {
             var eventType = typeof(TEvent);
             var interfaces = eventType.GetInterfaces();
-            if (interfaces.Length > 0 && _temporaryEventListeners.TryGetValue(interfaces[0], out var cb))
+
+            foreach (var @interface in interfaces)
             {
-                foreach (var eventListener in cb.GetEventListeners())
+                if (_temporaryEventListeners.TryGetValue(@interface, out var cb))
                 {
-                    yield return new EventHandler(null, eventListener);
+                    foreach (var eventListener in cb.GetEventListeners())
+                    {
+                        yield return new EventHandler(null, eventListener);
+                    }
                 }
             }
 
@@ -120,9 +124,9 @@ namespace Impostor.Server.Events
                 }
             }
 
-            if (_temporaryEventListeners.TryGetValue(eventType, out cb))
+            if (_temporaryEventListeners.TryGetValue(eventType, out var cb2))
             {
-                foreach (var eventListener in cb.GetEventListeners())
+                foreach (var eventListener in cb2.GetEventListeners())
                 {
                     yield return new EventHandler(null, eventListener);
                 }