Fixes #87 - Adds support for IEvent / IGameEvent type of EventListeners

This commit is contained in:
AeonLucid committed 2020-10-26 19:20:56 +01:00
1 parent bc3a45d818
commit 39bfc139f8
3 files changed
+17 -7

No files matched your search

+2 -2
View File
@@ -7,6 +7,6 @@
Normal = 2,
High = 3,
Highest = 4,
Monitor = 5
Monitor = 5,
}
}
}
@@ -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)
{
+9 -5
View 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);
}