From 39bfc139f81283fc737080b101bc22aaa1766266 Mon Sep 17 00:00:00 2001 From: AeonLucid Date: Mon, 26 Oct 2020 19:20:56 +0100 Subject: [PATCH] Fixes #87 - Adds support for IEvent / IGameEvent type of EventListeners --- src/Impostor.Api/Events/EventPriority.cs | 4 ++-- .../Handlers/GameEventListener.cs | 6 ++++++ src/Impostor.Server/Events/EventManager.cs | 14 +++++++++----- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/Impostor.Api/Events/EventPriority.cs b/src/Impostor.Api/Events/EventPriority.cs index 641f4aa..7acdbeb 100644 --- a/src/Impostor.Api/Events/EventPriority.cs +++ b/src/Impostor.Api/Events/EventPriority.cs @@ -7,6 +7,6 @@ Normal = 2, High = 3, Highest = 4, - Monitor = 5 + Monitor = 5, } -} \ No newline at end of file +} diff --git a/src/Impostor.Plugins.Example/Handlers/GameEventListener.cs b/src/Impostor.Plugins.Example/Handlers/GameEventListener.cs index 409ec4f..fe06d51 100644 --- a/src/Impostor.Plugins.Example/Handlers/GameEventListener.cs +++ b/src/Impostor.Plugins.Example/Handlers/GameEventListener.cs @@ -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) { diff --git a/src/Impostor.Server/Events/EventManager.cs b/src/Impostor.Server/Events/EventManager.cs index b39632e..cb5866b 100644 --- a/src/Impostor.Server/Events/EventManager.cs +++ b/src/Impostor.Server/Events/EventManager.cs @@ -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); } -- 2.39.5