mirror of
https://github.com/Impostor/Impostor.git
synced 2026-10-20 01:46:11 +00:00
Fixes #87 - Adds support for IEvent / IGameEvent type of EventListeners
This commit is contained in:
1 parent
bc3a45d818
commit
39bfc139f8
3 files changed
+17
-7
No files matched your search
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user