From: AeonLucid Date: Mon, 26 Oct 2020 18:20:56 +0000 (+0100) Subject: Fixes #87 - Adds support for IEvent / IGameEvent type of EventListeners X-Git-Tag: v1.2.2~68 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=39bfc139f81283fc737080b101bc22aaa1766266;p=rhonda%2Fimpostor.git Fixes #87 - Adds support for IEvent / IGameEvent type of EventListeners --- 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); }