From 961bd90ef62248bf25fb1168f1e1e1bfcdd66e82 Mon Sep 17 00:00:00 2001 From: AeonLucid Date: Mon, 26 Oct 2020 04:37:31 +0100 Subject: [PATCH] Change all events to use interfaces and move them to a better namespace --- docs/Writing-a-plugin.md | 7 +++--- src/.editorconfig | 1 + .../Events/Game/GameCreatedEvent.cs | 22 ----------------- .../Events/Game/GameDestroyedEvent.cs | 22 ----------------- .../Events/Game/GameEndedEvent.cs | 14 ----------- .../Events/Game/GameStartedEvent.cs | 17 ------------- .../Events/Game/GameStartingEvent.cs | 19 --------------- .../Events/Game/IGameCreatedEvent.cs | 11 +++++++++ .../Events/Game/IGameDestroyedEvent.cs | 11 +++++++++ .../Events/Game/IGameEndedEvent.cs | 6 +++++ src/Impostor.Api/Events/Game/IGameEvent.cs | 5 +++- .../Events/Game/IGamePlayerJoinedEvent.cs | 6 +++++ .../Events/Game/IGamePlayerLeftEvent.cs | 6 +++++ .../Events/Game/IGameStartedEvent.cs | 9 +++++++ .../Events/Game/IGameStartingEvent.cs | 11 +++++++++ .../Events/Game/Meeting/IMeetingEndedEvent.cs | 6 +++++ .../Events/Game/Meeting/IMeetingEvent.cs | 9 +++++++ .../Game/Meeting/IMeetingStartedEvent.cs | 6 +++++ .../Events/Game/Player/IPlayerChatEvent.cs | 10 ++++++++ .../Game/Player/IPlayerDestroyedEvent.cs | 6 +++++ .../Events/Game/Player/IPlayerSpawnedEvent.cs | 6 +++++ .../Events/Game/Player/PlayerMovementEvent.cs | 22 ----------------- .../Events/Game/PlayerJoinedGameEvent.cs | 18 -------------- .../Pages/Index.razor | 8 +++---- .../Handlers/GameEventListener.cs | 17 +++++++------ .../Handlers/MeetingEventListener.cs | 6 ++--- .../Handlers/PlayerEventListener.cs | 8 +++---- src/Impostor.Server/Events/EventManager.cs | 13 +++++++++- .../Events/Game/GameCreatedEvent.cs | 15 ++++++++++++ .../Events/Game/GameDestroyedEvent.cs | 15 ++++++++++++ .../Events/Game/GameEndedEvent.cs | 15 ++++++++++++ .../Events/Game/GamePlayerJoinedEvent.cs | 19 +++++++++++++++ .../Events/Game/GamePlayerLeftEvent.cs} | 11 +++++---- .../Events/Game/GameStartedEvent.cs | 15 ++++++++++++ .../Events/Game/GameStartingEvent.cs | 15 ++++++++++++ .../Events/Game/Meeting/MeetingEndedEvent.cs | 9 +++---- .../Game/Meeting/MeetingStartedEvent.cs | 9 +++---- .../Events/Game/Player/PlayerChatEvent.cs | 15 ++++-------- .../Game/Player/PlayerDestroyedEvent.cs | 12 ++++------ .../Events/Game/Player/PlayerMovementEvent.cs | 24 +++++++++++++++++++ .../Events/Game/Player/PlayerSpawnedEvent.cs | 12 ++++------ .../Impostor.Server.csproj.DotSettings | 1 + src/Impostor.Server/Net/Client.cs | 1 - .../Net/Inner/Objects/InnerMeetingHud.cs | 3 +-- .../Net/Inner/Objects/InnerPlayerControl.cs | 4 +--- .../Net/Manager/ClientManager.cs | 1 - .../Net/Manager/GameManager.cs | 4 ++-- src/Impostor.Server/Net/State/Game.Data.cs | 7 +++--- .../Net/State/Game.Incoming.cs | 2 +- .../Net/State/Game.Outgoing.cs | 1 - src/Impostor.Server/Net/State/Game.State.cs | 7 +++--- src/Impostor.Server/Net/State/Game.cs | 2 +- 52 files changed, 305 insertions(+), 216 deletions(-) delete mode 100644 src/Impostor.Api/Events/Game/GameCreatedEvent.cs delete mode 100644 src/Impostor.Api/Events/Game/GameDestroyedEvent.cs delete mode 100644 src/Impostor.Api/Events/Game/GameEndedEvent.cs delete mode 100644 src/Impostor.Api/Events/Game/GameStartedEvent.cs delete mode 100644 src/Impostor.Api/Events/Game/GameStartingEvent.cs create mode 100644 src/Impostor.Api/Events/Game/IGameCreatedEvent.cs create mode 100644 src/Impostor.Api/Events/Game/IGameDestroyedEvent.cs create mode 100644 src/Impostor.Api/Events/Game/IGameEndedEvent.cs create mode 100644 src/Impostor.Api/Events/Game/IGamePlayerJoinedEvent.cs create mode 100644 src/Impostor.Api/Events/Game/IGamePlayerLeftEvent.cs create mode 100644 src/Impostor.Api/Events/Game/IGameStartedEvent.cs create mode 100644 src/Impostor.Api/Events/Game/IGameStartingEvent.cs create mode 100644 src/Impostor.Api/Events/Game/Meeting/IMeetingEndedEvent.cs create mode 100644 src/Impostor.Api/Events/Game/Meeting/IMeetingEvent.cs create mode 100644 src/Impostor.Api/Events/Game/Meeting/IMeetingStartedEvent.cs create mode 100644 src/Impostor.Api/Events/Game/Player/IPlayerChatEvent.cs create mode 100644 src/Impostor.Api/Events/Game/Player/IPlayerDestroyedEvent.cs create mode 100644 src/Impostor.Api/Events/Game/Player/IPlayerSpawnedEvent.cs delete mode 100644 src/Impostor.Api/Events/Game/Player/PlayerMovementEvent.cs delete mode 100644 src/Impostor.Api/Events/Game/PlayerJoinedGameEvent.cs create mode 100644 src/Impostor.Server/Events/Game/GameCreatedEvent.cs create mode 100644 src/Impostor.Server/Events/Game/GameDestroyedEvent.cs create mode 100644 src/Impostor.Server/Events/Game/GameEndedEvent.cs create mode 100644 src/Impostor.Server/Events/Game/GamePlayerJoinedEvent.cs rename src/{Impostor.Api/Events/Game/PlayerLeftGameEvent.cs => Impostor.Server/Events/Game/GamePlayerLeftEvent.cs} (56%) create mode 100644 src/Impostor.Server/Events/Game/GameStartedEvent.cs create mode 100644 src/Impostor.Server/Events/Game/GameStartingEvent.cs rename src/{Impostor.Api => Impostor.Server}/Events/Game/Meeting/MeetingEndedEvent.cs (64%) rename src/{Impostor.Api => Impostor.Server}/Events/Game/Meeting/MeetingStartedEvent.cs (64%) rename src/{Impostor.Api => Impostor.Server}/Events/Game/Player/PlayerChatEvent.cs (65%) rename src/{Impostor.Api => Impostor.Server}/Events/Game/Player/PlayerDestroyedEvent.cs (70%) create mode 100644 src/Impostor.Server/Events/Game/Player/PlayerMovementEvent.cs rename src/{Impostor.Api => Impostor.Server}/Events/Game/Player/PlayerSpawnedEvent.cs (70%) diff --git a/docs/Writing-a-plugin.md b/docs/Writing-a-plugin.md index 99e99a3..0cfdb26 100644 --- a/docs/Writing-a-plugin.md +++ b/docs/Writing-a-plugin.md @@ -150,6 +150,7 @@ Create a new class called `GameEventListener`. Example code: ```csharp using Impostor.Api.Events; +using Impostor.Api.Events.Player; using Microsoft.Extensions.Logging; namespace Impostor.Plugins.Example.Handlers @@ -176,7 +177,7 @@ namespace Impostor.Plugins.Example.Handlers /// The event you want to listen for. /// [EventListener] - public void OnGameStarted(GameStartedEvent e) + public void OnGameStarted(IGameStartedEvent e) { _logger.LogInformation($"Game is starting."); @@ -197,13 +198,13 @@ namespace Impostor.Plugins.Example.Handlers } [EventListener] - public void OnGameEnded(GameEndedEvent e) + public void OnGameEnded(IGameEndedEvent e) { _logger.LogInformation($"Game has ended."); } [EventListener] - public void OnPlayerChat(PlayerChatEvent e) + public void OnPlayerChat(IPlayerChatEvent e) { _logger.LogInformation($"{e.PlayerControl.PlayerInfo.PlayerName} said {e.Message}"); } diff --git a/src/.editorconfig b/src/.editorconfig index d885931..ef7041d 100644 --- a/src/.editorconfig +++ b/src/.editorconfig @@ -11,6 +11,7 @@ indent_style = space # Code files [*.{cs,csx,vb,vbx}] indent_size = 4 +insert_final_newline = true # XML project files [*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}] diff --git a/src/Impostor.Api/Events/Game/GameCreatedEvent.cs b/src/Impostor.Api/Events/Game/GameCreatedEvent.cs deleted file mode 100644 index dc96fae..0000000 --- a/src/Impostor.Api/Events/Game/GameCreatedEvent.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Impostor.Api.Games; - -namespace Impostor.Api.Events -{ - /// - /// Called whenever a new is created. - /// - public sealed class GameCreatedEvent : IGameEvent - { - /// - /// Initializes a new instance of the class. - /// - /// Instance of the game. - public GameCreatedEvent(IGame game) - { - Game = game; - } - - /// - public IGame Game { get; } - } -} \ No newline at end of file diff --git a/src/Impostor.Api/Events/Game/GameDestroyedEvent.cs b/src/Impostor.Api/Events/Game/GameDestroyedEvent.cs deleted file mode 100644 index 36fec11..0000000 --- a/src/Impostor.Api/Events/Game/GameDestroyedEvent.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Impostor.Api.Games; - -namespace Impostor.Api.Events -{ - /// - /// Called whenever a new is destroyed. - /// - public sealed class GameDestroyedEvent : IGameEvent - { - /// - /// Initializes a new instance of the class. - /// - /// Instance of the game. - public GameDestroyedEvent(IGame game) - { - Game = game; - } - - /// - public IGame Game { get; } - } -} \ No newline at end of file diff --git a/src/Impostor.Api/Events/Game/GameEndedEvent.cs b/src/Impostor.Api/Events/Game/GameEndedEvent.cs deleted file mode 100644 index 1dc2f63..0000000 --- a/src/Impostor.Api/Events/Game/GameEndedEvent.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Impostor.Api.Games; - -namespace Impostor.Api.Events -{ - public class GameEndedEvent : IGameEvent - { - public GameEndedEvent(IGame game) - { - Game = game; - } - - public IGame Game { get; } - } -} \ No newline at end of file diff --git a/src/Impostor.Api/Events/Game/GameStartedEvent.cs b/src/Impostor.Api/Events/Game/GameStartedEvent.cs deleted file mode 100644 index 12311a3..0000000 --- a/src/Impostor.Api/Events/Game/GameStartedEvent.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Impostor.Api.Games; - -namespace Impostor.Api.Events -{ - /// - /// The game is started here and players have been initialized. - /// - public class GameStartedEvent : IGameEvent - { - public GameStartedEvent(IGame game) - { - Game = game; - } - - public IGame Game { get; } - } -} \ No newline at end of file diff --git a/src/Impostor.Api/Events/Game/GameStartingEvent.cs b/src/Impostor.Api/Events/Game/GameStartingEvent.cs deleted file mode 100644 index b60d007..0000000 --- a/src/Impostor.Api/Events/Game/GameStartingEvent.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Impostor.Api.Games; - -namespace Impostor.Api.Events -{ - /// - /// Called when the game is going to start. - /// When this is called, not all players are initialized properly yet. - /// If you want to get correct player states, use . - /// - public class GameStartingEvent : IGameEvent - { - public GameStartingEvent(IGame game) - { - Game = game; - } - - public IGame Game { get; } - } -} \ No newline at end of file diff --git a/src/Impostor.Api/Events/Game/IGameCreatedEvent.cs b/src/Impostor.Api/Events/Game/IGameCreatedEvent.cs new file mode 100644 index 0000000..ef45f1d --- /dev/null +++ b/src/Impostor.Api/Events/Game/IGameCreatedEvent.cs @@ -0,0 +1,11 @@ +using Impostor.Api.Games; + +namespace Impostor.Api.Events +{ + /// + /// Called whenever a new is created. + /// + public interface IGameCreatedEvent : IGameEvent + { + } +} diff --git a/src/Impostor.Api/Events/Game/IGameDestroyedEvent.cs b/src/Impostor.Api/Events/Game/IGameDestroyedEvent.cs new file mode 100644 index 0000000..7ff7b46 --- /dev/null +++ b/src/Impostor.Api/Events/Game/IGameDestroyedEvent.cs @@ -0,0 +1,11 @@ +using Impostor.Api.Games; + +namespace Impostor.Api.Events +{ + /// + /// Called whenever a new is destroyed. + /// + public interface IGameDestroyedEvent : IGameEvent + { + } +} diff --git a/src/Impostor.Api/Events/Game/IGameEndedEvent.cs b/src/Impostor.Api/Events/Game/IGameEndedEvent.cs new file mode 100644 index 0000000..215852c --- /dev/null +++ b/src/Impostor.Api/Events/Game/IGameEndedEvent.cs @@ -0,0 +1,6 @@ +namespace Impostor.Api.Events +{ + public interface IGameEndedEvent : IGameEvent + { + } +} diff --git a/src/Impostor.Api/Events/Game/IGameEvent.cs b/src/Impostor.Api/Events/Game/IGameEvent.cs index 4aacd18..c9ae579 100644 --- a/src/Impostor.Api/Events/Game/IGameEvent.cs +++ b/src/Impostor.Api/Events/Game/IGameEvent.cs @@ -4,6 +4,9 @@ namespace Impostor.Api.Events { public interface IGameEvent : IEvent { + /// + /// Gets the this event belongs to. + /// IGame Game { get; } } -} \ No newline at end of file +} diff --git a/src/Impostor.Api/Events/Game/IGamePlayerJoinedEvent.cs b/src/Impostor.Api/Events/Game/IGamePlayerJoinedEvent.cs new file mode 100644 index 0000000..921568e --- /dev/null +++ b/src/Impostor.Api/Events/Game/IGamePlayerJoinedEvent.cs @@ -0,0 +1,6 @@ +namespace Impostor.Api.Events +{ + public interface IGamePlayerJoinedEvent : IGameEvent + { + } +} diff --git a/src/Impostor.Api/Events/Game/IGamePlayerLeftEvent.cs b/src/Impostor.Api/Events/Game/IGamePlayerLeftEvent.cs new file mode 100644 index 0000000..21d8b7c --- /dev/null +++ b/src/Impostor.Api/Events/Game/IGamePlayerLeftEvent.cs @@ -0,0 +1,6 @@ +namespace Impostor.Api.Events +{ + public interface IGamePlayerLeftEvent : IGameEvent + { + } +} diff --git a/src/Impostor.Api/Events/Game/IGameStartedEvent.cs b/src/Impostor.Api/Events/Game/IGameStartedEvent.cs new file mode 100644 index 0000000..b6e5111 --- /dev/null +++ b/src/Impostor.Api/Events/Game/IGameStartedEvent.cs @@ -0,0 +1,9 @@ +namespace Impostor.Api.Events +{ + /// + /// The game is started here and players have been initialized. + /// + public interface IGameStartedEvent : IGameEvent + { + } +} diff --git a/src/Impostor.Api/Events/Game/IGameStartingEvent.cs b/src/Impostor.Api/Events/Game/IGameStartingEvent.cs new file mode 100644 index 0000000..5998bf2 --- /dev/null +++ b/src/Impostor.Api/Events/Game/IGameStartingEvent.cs @@ -0,0 +1,11 @@ +namespace Impostor.Api.Events +{ + /// + /// Called when the game is going to start. + /// When this is called, not all players are initialized properly yet. + /// If you want to get correct player states, use . + /// + public interface IGameStartingEvent : IGameEvent + { + } +} diff --git a/src/Impostor.Api/Events/Game/Meeting/IMeetingEndedEvent.cs b/src/Impostor.Api/Events/Game/Meeting/IMeetingEndedEvent.cs new file mode 100644 index 0000000..a217580 --- /dev/null +++ b/src/Impostor.Api/Events/Game/Meeting/IMeetingEndedEvent.cs @@ -0,0 +1,6 @@ +namespace Impostor.Api.Events.Meeting +{ + public interface IMeetingEndedEvent : IMeetingEvent + { + } +} diff --git a/src/Impostor.Api/Events/Game/Meeting/IMeetingEvent.cs b/src/Impostor.Api/Events/Game/Meeting/IMeetingEvent.cs new file mode 100644 index 0000000..4461318 --- /dev/null +++ b/src/Impostor.Api/Events/Game/Meeting/IMeetingEvent.cs @@ -0,0 +1,9 @@ +using Impostor.Api.Net.Inner.Objects; + +namespace Impostor.Api.Events.Meeting +{ + public interface IMeetingEvent : IGameEvent + { + IInnerMeetingHud MeetingHud { get; } + } +} diff --git a/src/Impostor.Api/Events/Game/Meeting/IMeetingStartedEvent.cs b/src/Impostor.Api/Events/Game/Meeting/IMeetingStartedEvent.cs new file mode 100644 index 0000000..a237fff --- /dev/null +++ b/src/Impostor.Api/Events/Game/Meeting/IMeetingStartedEvent.cs @@ -0,0 +1,6 @@ +namespace Impostor.Api.Events.Meeting +{ + public interface IMeetingStartedEvent : IMeetingEvent + { + } +} diff --git a/src/Impostor.Api/Events/Game/Player/IPlayerChatEvent.cs b/src/Impostor.Api/Events/Game/Player/IPlayerChatEvent.cs new file mode 100644 index 0000000..52efe96 --- /dev/null +++ b/src/Impostor.Api/Events/Game/Player/IPlayerChatEvent.cs @@ -0,0 +1,10 @@ +namespace Impostor.Api.Events.Player +{ + public interface IPlayerChatEvent : IPlayerEvent + { + /// + /// Gets the message sent by the player. + /// + string Message { get; } + } +} diff --git a/src/Impostor.Api/Events/Game/Player/IPlayerDestroyedEvent.cs b/src/Impostor.Api/Events/Game/Player/IPlayerDestroyedEvent.cs new file mode 100644 index 0000000..ac80d64 --- /dev/null +++ b/src/Impostor.Api/Events/Game/Player/IPlayerDestroyedEvent.cs @@ -0,0 +1,6 @@ +namespace Impostor.Api.Events.Player +{ + public interface IPlayerDestroyedEvent : IPlayerEvent + { + } +} diff --git a/src/Impostor.Api/Events/Game/Player/IPlayerSpawnedEvent.cs b/src/Impostor.Api/Events/Game/Player/IPlayerSpawnedEvent.cs new file mode 100644 index 0000000..a3be654 --- /dev/null +++ b/src/Impostor.Api/Events/Game/Player/IPlayerSpawnedEvent.cs @@ -0,0 +1,6 @@ +namespace Impostor.Api.Events.Player +{ + public interface IPlayerSpawnedEvent : IPlayerEvent + { + } +} diff --git a/src/Impostor.Api/Events/Game/Player/PlayerMovementEvent.cs b/src/Impostor.Api/Events/Game/Player/PlayerMovementEvent.cs deleted file mode 100644 index 7fa0085..0000000 --- a/src/Impostor.Api/Events/Game/Player/PlayerMovementEvent.cs +++ /dev/null @@ -1,22 +0,0 @@ -// using Impostor.Api.Games; -// using Impostor.Api.Net; -// using Impostor.Api.Net.Inner.Objects; -// -// namespace Impostor.Api.Events.Player -// { -// public class PlayerMovementEvent : IPlayerEvent -// { -// public PlayerMovementEvent(IGame game, IClientPlayer clientPlayer, IInnerPlayerControl playerControl) -// { -// Game = game; -// ClientPlayer = clientPlayer; -// PlayerControl = playerControl; -// } -// -// public IGame Game { get; } -// -// public IClientPlayer ClientPlayer { get; } -// -// public IInnerPlayerControl PlayerControl { get; } -// } -// } \ No newline at end of file diff --git a/src/Impostor.Api/Events/Game/PlayerJoinedGameEvent.cs b/src/Impostor.Api/Events/Game/PlayerJoinedGameEvent.cs deleted file mode 100644 index 3c165aa..0000000 --- a/src/Impostor.Api/Events/Game/PlayerJoinedGameEvent.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Impostor.Api.Games; -using Impostor.Api.Net; - -namespace Impostor.Api.Events -{ - public class PlayerJoinedGameEvent : IGameEvent - { - public PlayerJoinedGameEvent(IGame game, IClientPlayer player) - { - Game = game; - Player = player; - } - - public IGame Game { get; } - - public IClientPlayer Player { get; } - } -} \ No newline at end of file diff --git a/src/Impostor.Plugins.Debugger/Pages/Index.razor b/src/Impostor.Plugins.Debugger/Pages/Index.razor index 5548dbb..1bfa478 100644 --- a/src/Impostor.Plugins.Debugger/Pages/Index.razor +++ b/src/Impostor.Plugins.Debugger/Pages/Index.razor @@ -48,10 +48,10 @@ @code { private IDisposable _disposable; - [EventListener(typeof(GameCreatedEvent))] - [EventListener(typeof(GameDestroyedEvent))] - [EventListener(typeof(PlayerJoinedGameEvent))] - [EventListener(typeof(PlayerLeftGameEvent))] + [EventListener(typeof(IGameCreatedEvent))] + [EventListener(typeof(IGameDestroyedEvent))] + [EventListener(typeof(IGamePlayerJoinedEvent))] + [EventListener(typeof(IGamePlayerLeftEvent))] public void OnGameCreated(IGameEvent e) { StateHasChanged(); diff --git a/src/Impostor.Plugins.Example/Handlers/GameEventListener.cs b/src/Impostor.Plugins.Example/Handlers/GameEventListener.cs index 89947aa..409ec4f 100644 --- a/src/Impostor.Plugins.Example/Handlers/GameEventListener.cs +++ b/src/Impostor.Plugins.Example/Handlers/GameEventListener.cs @@ -1,25 +1,24 @@ using System; using Impostor.Api.Events; -using Impostor.Api.Events.Player; namespace Impostor.Plugins.Example.Handlers { public class GameEventListener : IEventListener { [EventListener] - public void OnGameCreated(GameCreatedEvent e) + public void OnGameCreated(IGameCreatedEvent e) { Console.WriteLine("Game > created"); } [EventListener] - public void OnGameStarting(GameStartingEvent e) + public void OnGameStarting(IGameStartingEvent e) { Console.WriteLine("Game > starting"); } [EventListener] - public void OnGameStarted(GameStartedEvent e) + public void OnGameStarted(IGameStartedEvent e) { Console.WriteLine("Game > started"); @@ -32,27 +31,27 @@ namespace Impostor.Plugins.Example.Handlers } [EventListener] - public void OnGameEnded(GameEndedEvent e) + public void OnGameEnded(IGameEndedEvent e) { Console.WriteLine("Game > ended"); } [EventListener] - public void OnGameDestroyed(GameDestroyedEvent e) + public void OnGameDestroyed(IGameDestroyedEvent e) { Console.WriteLine("Game > destroyed"); } [EventListener] - public void OnPlayerJoined(PlayerJoinedGameEvent e) + public void OnPlayerJoined(IGamePlayerJoinedEvent e) { Console.WriteLine("Player joined a game."); } [EventListener] - public void OnPlayerLeftGame(PlayerLeftGameEvent e) + public void OnPlayerLeftGame(IGamePlayerLeftEvent e) { Console.WriteLine("Player left a game."); } } -} \ No newline at end of file +} diff --git a/src/Impostor.Plugins.Example/Handlers/MeetingEventListener.cs b/src/Impostor.Plugins.Example/Handlers/MeetingEventListener.cs index fffa3a5..847532c 100644 --- a/src/Impostor.Plugins.Example/Handlers/MeetingEventListener.cs +++ b/src/Impostor.Plugins.Example/Handlers/MeetingEventListener.cs @@ -7,15 +7,15 @@ namespace Impostor.Plugins.Example.Handlers public class MeetingEventListener : IEventListener { [EventListener] - public void OnMeetingStarted(MeetingStartedEvent e) + public void OnMeetingStarted(IMeetingStartedEvent e) { Console.WriteLine("Meeting > started"); } [EventListener] - public void OnMeetingEnded(MeetingEndedEvent e) + public void OnMeetingEnded(IMeetingEndedEvent e) { Console.WriteLine("Meeting > ended"); } } -} \ No newline at end of file +} diff --git a/src/Impostor.Plugins.Example/Handlers/PlayerEventListener.cs b/src/Impostor.Plugins.Example/Handlers/PlayerEventListener.cs index 50536a8..2b1b130 100644 --- a/src/Impostor.Plugins.Example/Handlers/PlayerEventListener.cs +++ b/src/Impostor.Plugins.Example/Handlers/PlayerEventListener.cs @@ -8,19 +8,19 @@ namespace Impostor.Plugins.Example.Handlers public class PlayerEventListener : IEventListener { [EventListener] - public void OnPlayerSpawned(PlayerSpawnedEvent e) + public void OnPlayerSpawned(IPlayerSpawnedEvent e) { Console.WriteLine(e.PlayerControl.PlayerInfo.PlayerName + " spawned"); } [EventListener] - public void OnPlayerDestroyed(PlayerDestroyedEvent e) + public void OnPlayerDestroyed(IPlayerDestroyedEvent e) { Console.WriteLine(e.PlayerControl.PlayerInfo.PlayerName + " destroyed"); } [EventListener] - public async ValueTask OnPlayerChat(PlayerChatEvent e) + public async ValueTask OnPlayerChat(IPlayerChatEvent e) { Console.WriteLine(e.PlayerControl.PlayerInfo.PlayerName + " said " + e.Message); @@ -37,4 +37,4 @@ namespace Impostor.Plugins.Example.Handlers await e.PlayerControl.SendChatAsync(e.Message); } } -} \ No newline at end of file +} diff --git a/src/Impostor.Server/Events/EventManager.cs b/src/Impostor.Server/Events/EventManager.cs index 6147e2f..b39632e 100644 --- a/src/Impostor.Server/Events/EventManager.cs +++ b/src/Impostor.Server/Events/EventManager.cs @@ -2,6 +2,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Threading.Tasks; using Impostor.Api.Events; using Impostor.Api.Events.Managers; @@ -88,6 +89,16 @@ namespace Impostor.Server.Events private IEnumerable GetHandlers(IServiceProvider services) where TEvent : IEvent { + var eventType = typeof(TEvent); + var interfaces = eventType.GetInterfaces(); + if (interfaces.Length > 0 && _temporaryEventListeners.TryGetValue(interfaces[0], out var cb)) + { + foreach (var eventListener in cb.GetEventListeners()) + { + yield return new EventHandler(null, eventListener); + } + } + foreach (var handler in services.GetServices()) { if (handler is IManualEventListener manualEventListener && manualEventListener.CanExecute()) @@ -109,7 +120,7 @@ namespace Impostor.Server.Events } } - if (_temporaryEventListeners.TryGetValue(typeof(TEvent), out var cb)) + if (_temporaryEventListeners.TryGetValue(eventType, out cb)) { foreach (var eventListener in cb.GetEventListeners()) { diff --git a/src/Impostor.Server/Events/Game/GameCreatedEvent.cs b/src/Impostor.Server/Events/Game/GameCreatedEvent.cs new file mode 100644 index 0000000..57e7a20 --- /dev/null +++ b/src/Impostor.Server/Events/Game/GameCreatedEvent.cs @@ -0,0 +1,15 @@ +using Impostor.Api.Events; +using Impostor.Api.Games; + +namespace Impostor.Server.Events +{ + public class GameCreatedEvent : IGameCreatedEvent + { + public GameCreatedEvent(IGame game) + { + Game = game; + } + + public IGame Game { get; } + } +} diff --git a/src/Impostor.Server/Events/Game/GameDestroyedEvent.cs b/src/Impostor.Server/Events/Game/GameDestroyedEvent.cs new file mode 100644 index 0000000..5ee1b11 --- /dev/null +++ b/src/Impostor.Server/Events/Game/GameDestroyedEvent.cs @@ -0,0 +1,15 @@ +using Impostor.Api.Events; +using Impostor.Api.Games; + +namespace Impostor.Server.Events +{ + public class GameDestroyedEvent : IGameDestroyedEvent + { + public GameDestroyedEvent(IGame game) + { + Game = game; + } + + public IGame Game { get; } + } +} diff --git a/src/Impostor.Server/Events/Game/GameEndedEvent.cs b/src/Impostor.Server/Events/Game/GameEndedEvent.cs new file mode 100644 index 0000000..621b581 --- /dev/null +++ b/src/Impostor.Server/Events/Game/GameEndedEvent.cs @@ -0,0 +1,15 @@ +using Impostor.Api.Events; +using Impostor.Api.Games; + +namespace Impostor.Server.Events +{ + public class GameEndedEvent : IGameEndedEvent + { + public GameEndedEvent(IGame game) + { + Game = game; + } + + public IGame Game { get; } + } +} diff --git a/src/Impostor.Server/Events/Game/GamePlayerJoinedEvent.cs b/src/Impostor.Server/Events/Game/GamePlayerJoinedEvent.cs new file mode 100644 index 0000000..d728c59 --- /dev/null +++ b/src/Impostor.Server/Events/Game/GamePlayerJoinedEvent.cs @@ -0,0 +1,19 @@ +using Impostor.Api.Events; +using Impostor.Api.Games; +using Impostor.Api.Net; + +namespace Impostor.Server.Events +{ + public class GamePlayerJoinedEvent : IGamePlayerJoinedEvent + { + public GamePlayerJoinedEvent(IGame game, IClientPlayer player) + { + Game = game; + Player = player; + } + + public IGame Game { get; } + + public IClientPlayer Player { get; } + } +} diff --git a/src/Impostor.Api/Events/Game/PlayerLeftGameEvent.cs b/src/Impostor.Server/Events/Game/GamePlayerLeftEvent.cs similarity index 56% rename from src/Impostor.Api/Events/Game/PlayerLeftGameEvent.cs rename to src/Impostor.Server/Events/Game/GamePlayerLeftEvent.cs index 5947ff2..d295103 100644 --- a/src/Impostor.Api/Events/Game/PlayerLeftGameEvent.cs +++ b/src/Impostor.Server/Events/Game/GamePlayerLeftEvent.cs @@ -1,11 +1,12 @@ -using Impostor.Api.Games; +using Impostor.Api.Events; +using Impostor.Api.Games; using Impostor.Api.Net; -namespace Impostor.Api.Events +namespace Impostor.Server.Events { - public class PlayerLeftGameEvent : IGameEvent + public class GamePlayerLeftEvent : IGamePlayerLeftEvent { - public PlayerLeftGameEvent(IGame game, IClientPlayer player, bool isBan) + public GamePlayerLeftEvent(IGame game, IClientPlayer player, bool isBan) { Game = game; Player = player; @@ -18,4 +19,4 @@ namespace Impostor.Api.Events public bool IsBan { get; } } -} \ No newline at end of file +} diff --git a/src/Impostor.Server/Events/Game/GameStartedEvent.cs b/src/Impostor.Server/Events/Game/GameStartedEvent.cs new file mode 100644 index 0000000..d21f9ec --- /dev/null +++ b/src/Impostor.Server/Events/Game/GameStartedEvent.cs @@ -0,0 +1,15 @@ +using Impostor.Api.Events; +using Impostor.Api.Games; + +namespace Impostor.Server.Events +{ + public class GameStartedEvent : IGameStartedEvent + { + public GameStartedEvent(IGame game) + { + Game = game; + } + + public IGame Game { get; } + } +} diff --git a/src/Impostor.Server/Events/Game/GameStartingEvent.cs b/src/Impostor.Server/Events/Game/GameStartingEvent.cs new file mode 100644 index 0000000..a0763e8 --- /dev/null +++ b/src/Impostor.Server/Events/Game/GameStartingEvent.cs @@ -0,0 +1,15 @@ +using Impostor.Api.Events; +using Impostor.Api.Games; + +namespace Impostor.Server.Events +{ + public class GameStartingEvent : IGameStartingEvent + { + public GameStartingEvent(IGame game) + { + Game = game; + } + + public IGame Game { get; } + } +} diff --git a/src/Impostor.Api/Events/Game/Meeting/MeetingEndedEvent.cs b/src/Impostor.Server/Events/Game/Meeting/MeetingEndedEvent.cs similarity index 64% rename from src/Impostor.Api/Events/Game/Meeting/MeetingEndedEvent.cs rename to src/Impostor.Server/Events/Game/Meeting/MeetingEndedEvent.cs index 2586c0b..cf55f7d 100644 --- a/src/Impostor.Api/Events/Game/Meeting/MeetingEndedEvent.cs +++ b/src/Impostor.Server/Events/Game/Meeting/MeetingEndedEvent.cs @@ -1,9 +1,10 @@ -using Impostor.Api.Games; +using Impostor.Api.Events.Meeting; +using Impostor.Api.Games; using Impostor.Api.Net.Inner.Objects; -namespace Impostor.Api.Events.Meeting +namespace Impostor.Server.Events.Meeting { - public class MeetingEndedEvent : IEvent + public class MeetingEndedEvent : IMeetingEndedEvent { public MeetingEndedEvent(IGame game, IInnerMeetingHud meetingHud) { @@ -15,4 +16,4 @@ namespace Impostor.Api.Events.Meeting public IInnerMeetingHud MeetingHud { get; } } -} \ No newline at end of file +} diff --git a/src/Impostor.Api/Events/Game/Meeting/MeetingStartedEvent.cs b/src/Impostor.Server/Events/Game/Meeting/MeetingStartedEvent.cs similarity index 64% rename from src/Impostor.Api/Events/Game/Meeting/MeetingStartedEvent.cs rename to src/Impostor.Server/Events/Game/Meeting/MeetingStartedEvent.cs index 8ad8964..aa689a3 100644 --- a/src/Impostor.Api/Events/Game/Meeting/MeetingStartedEvent.cs +++ b/src/Impostor.Server/Events/Game/Meeting/MeetingStartedEvent.cs @@ -1,9 +1,10 @@ -using Impostor.Api.Games; +using Impostor.Api.Events.Meeting; +using Impostor.Api.Games; using Impostor.Api.Net.Inner.Objects; -namespace Impostor.Api.Events.Meeting +namespace Impostor.Server.Events.Meeting { - public class MeetingStartedEvent : IEvent + public class MeetingStartedEvent : IMeetingStartedEvent { public MeetingStartedEvent(IGame game, IInnerMeetingHud meetingHud) { @@ -15,4 +16,4 @@ namespace Impostor.Api.Events.Meeting public IInnerMeetingHud MeetingHud { get; } } -} \ No newline at end of file +} diff --git a/src/Impostor.Api/Events/Game/Player/PlayerChatEvent.cs b/src/Impostor.Server/Events/Game/Player/PlayerChatEvent.cs similarity index 65% rename from src/Impostor.Api/Events/Game/Player/PlayerChatEvent.cs rename to src/Impostor.Server/Events/Game/Player/PlayerChatEvent.cs index 5be360c..7b7eb22 100644 --- a/src/Impostor.Api/Events/Game/Player/PlayerChatEvent.cs +++ b/src/Impostor.Server/Events/Game/Player/PlayerChatEvent.cs @@ -1,10 +1,11 @@ -using Impostor.Api.Games; +using Impostor.Api.Events.Player; +using Impostor.Api.Games; using Impostor.Api.Net; using Impostor.Api.Net.Inner.Objects; -namespace Impostor.Api.Events.Player +namespace Impostor.Server.Events.Player { - public class PlayerChatEvent : IPlayerEvent + public class PlayerChatEvent : IPlayerChatEvent { public PlayerChatEvent(IGame game, IClientPlayer clientPlayer, IInnerPlayerControl playerControl, string message) { @@ -14,18 +15,12 @@ namespace Impostor.Api.Events.Player Message = message; } - /// public IGame Game { get; } - /// public IClientPlayer ClientPlayer { get; } - /// public IInnerPlayerControl PlayerControl { get; } - /// - /// Gets the message sent by the player. - /// public string Message { get; } } -} \ No newline at end of file +} diff --git a/src/Impostor.Api/Events/Game/Player/PlayerDestroyedEvent.cs b/src/Impostor.Server/Events/Game/Player/PlayerDestroyedEvent.cs similarity index 70% rename from src/Impostor.Api/Events/Game/Player/PlayerDestroyedEvent.cs rename to src/Impostor.Server/Events/Game/Player/PlayerDestroyedEvent.cs index dc4b608..69a20c9 100644 --- a/src/Impostor.Api/Events/Game/Player/PlayerDestroyedEvent.cs +++ b/src/Impostor.Server/Events/Game/Player/PlayerDestroyedEvent.cs @@ -1,10 +1,11 @@ -using Impostor.Api.Games; +using Impostor.Api.Events.Player; +using Impostor.Api.Games; using Impostor.Api.Net; using Impostor.Api.Net.Inner.Objects; -namespace Impostor.Api.Events.Player +namespace Impostor.Server.Events.Player { - public class PlayerDestroyedEvent : IPlayerEvent + public class PlayerDestroyedEvent : IPlayerDestroyedEvent { public PlayerDestroyedEvent(IGame game, IClientPlayer clientPlayer, IInnerPlayerControl playerControl) { @@ -13,13 +14,10 @@ namespace Impostor.Api.Events.Player PlayerControl = playerControl; } - /// public IGame Game { get; } - /// public IClientPlayer ClientPlayer { get; } - /// public IInnerPlayerControl PlayerControl { get; } } -} \ No newline at end of file +} diff --git a/src/Impostor.Server/Events/Game/Player/PlayerMovementEvent.cs b/src/Impostor.Server/Events/Game/Player/PlayerMovementEvent.cs new file mode 100644 index 0000000..31ac388 --- /dev/null +++ b/src/Impostor.Server/Events/Game/Player/PlayerMovementEvent.cs @@ -0,0 +1,24 @@ +using Impostor.Api.Events.Player; +using Impostor.Api.Games; +using Impostor.Api.Net; +using Impostor.Api.Net.Inner.Objects; + +namespace Impostor.Server.Events.Player +{ + // TODO: Finish and use event, needs to be pooled + public class PlayerMovementEvent : IPlayerEvent + { + public PlayerMovementEvent(IGame game, IClientPlayer clientPlayer, IInnerPlayerControl playerControl) + { + Game = game; + ClientPlayer = clientPlayer; + PlayerControl = playerControl; + } + + public IGame Game { get; } + + public IClientPlayer ClientPlayer { get; } + + public IInnerPlayerControl PlayerControl { get; } + } +} diff --git a/src/Impostor.Api/Events/Game/Player/PlayerSpawnedEvent.cs b/src/Impostor.Server/Events/Game/Player/PlayerSpawnedEvent.cs similarity index 70% rename from src/Impostor.Api/Events/Game/Player/PlayerSpawnedEvent.cs rename to src/Impostor.Server/Events/Game/Player/PlayerSpawnedEvent.cs index 2078f04..4b6fda1 100644 --- a/src/Impostor.Api/Events/Game/Player/PlayerSpawnedEvent.cs +++ b/src/Impostor.Server/Events/Game/Player/PlayerSpawnedEvent.cs @@ -1,10 +1,11 @@ -using Impostor.Api.Games; +using Impostor.Api.Events.Player; +using Impostor.Api.Games; using Impostor.Api.Net; using Impostor.Api.Net.Inner.Objects; -namespace Impostor.Api.Events.Player +namespace Impostor.Server.Events.Player { - public class PlayerSpawnedEvent : IPlayerEvent + public class PlayerSpawnedEvent : IPlayerSpawnedEvent { public PlayerSpawnedEvent(IGame game, IClientPlayer clientPlayer, IInnerPlayerControl playerControl) { @@ -13,13 +14,10 @@ namespace Impostor.Api.Events.Player PlayerControl = playerControl; } - /// public IGame Game { get; } - /// public IClientPlayer ClientPlayer { get; } - /// public IInnerPlayerControl PlayerControl { get; } } -} \ No newline at end of file +} diff --git a/src/Impostor.Server/Impostor.Server.csproj.DotSettings b/src/Impostor.Server/Impostor.Server.csproj.DotSettings index 17962b1..5c07b47 100644 --- a/src/Impostor.Server/Impostor.Server.csproj.DotSettings +++ b/src/Impostor.Server/Impostor.Server.csproj.DotSettings @@ -1,2 +1,3 @@  + True True \ No newline at end of file diff --git a/src/Impostor.Server/Net/Client.cs b/src/Impostor.Server/Net/Client.cs index 189ae4d..b6fb097 100644 --- a/src/Impostor.Server/Net/Client.cs +++ b/src/Impostor.Server/Net/Client.cs @@ -9,7 +9,6 @@ using Impostor.Api.Net.Messages.C2S; using Impostor.Api.Net.Messages.S2C; using Impostor.Hazel; using Impostor.Server.Config; -using Impostor.Server.Net.Hazel; using Impostor.Server.Net.Manager; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs b/src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs index 29a803b..941a4b3 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs @@ -2,11 +2,10 @@ using System.Linq; using System.Threading.Tasks; using Impostor.Api; -using Impostor.Api.Events; using Impostor.Api.Events.Managers; -using Impostor.Api.Events.Meeting; using Impostor.Api.Net; using Impostor.Api.Net.Messages; +using Impostor.Server.Events.Meeting; using Impostor.Server.Net.State; using Microsoft.Extensions.Logging; diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs index c55f2ec..74aa531 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs @@ -1,13 +1,11 @@ using System; using System.Threading.Tasks; using Impostor.Api; -using Impostor.Api.Events; using Impostor.Api.Events.Managers; -using Impostor.Api.Events.Player; using Impostor.Api.Innersloth; using Impostor.Api.Net; -using Impostor.Api.Net.Inner.Objects; using Impostor.Api.Net.Messages; +using Impostor.Server.Events.Player; using Impostor.Server.Net.Inner.Objects.Components; using Impostor.Server.Net.State; using Microsoft.Extensions.DependencyInjection; diff --git a/src/Impostor.Server/Net/Manager/ClientManager.cs b/src/Impostor.Server/Net/Manager/ClientManager.cs index 96b2f54..6309dab 100644 --- a/src/Impostor.Server/Net/Manager/ClientManager.cs +++ b/src/Impostor.Server/Net/Manager/ClientManager.cs @@ -5,7 +5,6 @@ using System.Threading; using System.Threading.Tasks; using Impostor.Api.Innersloth; using Impostor.Api.Net; -using Impostor.Api.Net.Manager; using Impostor.Api.Net.Messages; using Impostor.Api.Net.Messages.S2C; using Impostor.Hazel; diff --git a/src/Impostor.Server/Net/Manager/GameManager.cs b/src/Impostor.Server/Net/Manager/GameManager.cs index 1cf68fa..405ebc0 100644 --- a/src/Impostor.Server/Net/Manager/GameManager.cs +++ b/src/Impostor.Server/Net/Manager/GameManager.cs @@ -5,12 +5,12 @@ using System.Linq; using System.Net; using System.Threading.Tasks; using Impostor.Api; -using Impostor.Api.Events; using Impostor.Api.Events.Managers; using Impostor.Api.Games; using Impostor.Api.Games.Managers; using Impostor.Api.Innersloth; using Impostor.Server.Config; +using Impostor.Server.Events; using Impostor.Server.Net.Redirector; using Impostor.Server.Net.State; using Microsoft.Extensions.DependencyInjection; @@ -147,4 +147,4 @@ namespace Impostor.Server.Net.Manager await _eventManager.CallAsync(new GameDestroyedEvent(game)); } } -} \ No newline at end of file +} diff --git a/src/Impostor.Server/Net/State/Game.Data.cs b/src/Impostor.Server/Net/State/Game.Data.cs index 3fd4b50..d3eaff5 100644 --- a/src/Impostor.Server/Net/State/Game.Data.cs +++ b/src/Impostor.Server/Net/State/Game.Data.cs @@ -3,13 +3,12 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Impostor.Api; -using Impostor.Api.Events; -using Impostor.Api.Events.Meeting; -using Impostor.Api.Events.Player; using Impostor.Api.Innersloth; using Impostor.Api.Net.Messages; using Impostor.Api.Net.Messages.S2C; using Impostor.Hazel; +using Impostor.Server.Events.Meeting; +using Impostor.Server.Events.Player; using Impostor.Server.Net.Inner; using Impostor.Server.Net.Inner.Objects; using Impostor.Server.Net.Inner.Objects.Components; @@ -120,7 +119,7 @@ namespace Impostor.Server.Net.State { switch (netObj) { - case InnerLobbyBehaviour lobby: + case InnerLobbyBehaviour: { GameNet.LobbyBehaviour = null; break; diff --git a/src/Impostor.Server/Net/State/Game.Incoming.cs b/src/Impostor.Server/Net/State/Game.Incoming.cs index 7d81b36..4ff9a63 100644 --- a/src/Impostor.Server/Net/State/Game.Incoming.cs +++ b/src/Impostor.Server/Net/State/Game.Incoming.cs @@ -1,12 +1,12 @@ using System; using System.Threading; using System.Threading.Tasks; -using Impostor.Api.Events; using Impostor.Api.Games; using Impostor.Api.Innersloth; using Impostor.Api.Net; using Impostor.Api.Net.Messages; using Impostor.Hazel; +using Impostor.Server.Events; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; diff --git a/src/Impostor.Server/Net/State/Game.Outgoing.cs b/src/Impostor.Server/Net/State/Game.Outgoing.cs index 555216a..cd8098f 100644 --- a/src/Impostor.Server/Net/State/Game.Outgoing.cs +++ b/src/Impostor.Server/Net/State/Game.Outgoing.cs @@ -5,7 +5,6 @@ using Impostor.Api.Net; using Impostor.Api.Net.Messages; using Impostor.Api.Net.Messages.S2C; using Impostor.Hazel; -using Impostor.Hazel.Udp; using Impostor.Server.Net.Inner; namespace Impostor.Server.Net.State diff --git a/src/Impostor.Server/Net/State/Game.State.cs b/src/Impostor.Server/Net/State/Game.State.cs index c53a3d4..e311776 100644 --- a/src/Impostor.Server/Net/State/Game.State.cs +++ b/src/Impostor.Server/Net/State/Game.State.cs @@ -1,12 +1,11 @@ using System.Linq; using System.Threading.Tasks; using Impostor.Api; -using Impostor.Api.Events; -using Impostor.Api.Events.Player; using Impostor.Api.Innersloth; using Impostor.Api.Net; using Impostor.Api.Net.Messages; using Impostor.Hazel; +using Impostor.Server.Events; using Impostor.Server.Net.Hazel; using Microsoft.Extensions.Logging; @@ -29,7 +28,7 @@ namespace Impostor.Server.Net.State await InitGameDataAsync(player); } - await _eventManager.CallAsync(new PlayerJoinedGameEvent(this, player)); + await _eventManager.CallAsync(new GamePlayerJoinedEvent(this, player)); } private async ValueTask PlayerRemove(int playerId, bool isBan = false) @@ -73,7 +72,7 @@ namespace Impostor.Server.Net.State BanIp(player.Client.Connection.EndPoint.Address); } - await _eventManager.CallAsync(new PlayerLeftGameEvent(this, player, isBan)); + await _eventManager.CallAsync(new GamePlayerLeftEvent(this, player, isBan)); // Player can refuse to be kicked and keep the connection open, check for this. _ = Task.Run(async () => diff --git a/src/Impostor.Server/Net/State/Game.cs b/src/Impostor.Server/Net/State/Game.cs index 7462cd6..ed2049d 100644 --- a/src/Impostor.Server/Net/State/Game.cs +++ b/src/Impostor.Server/Net/State/Game.cs @@ -4,13 +4,13 @@ using System.Collections.Generic; using System.Linq; using System.Net; using System.Threading.Tasks; -using Impostor.Api.Events; using Impostor.Api.Events.Managers; using Impostor.Api.Games; using Impostor.Api.Innersloth; using Impostor.Api.Net; using Impostor.Api.Net.Messages; using Impostor.Api.Net.Messages.S2C; +using Impostor.Server.Events; using Impostor.Server.Net.Manager; using Microsoft.Extensions.Logging; -- 2.39.5