From: AeonLucid Date: Mon, 26 Oct 2020 03:37:31 +0000 (+0100) Subject: Change all events to use interfaces and move them to a better namespace X-Git-Tag: v1.2.2~74^2 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=961bd90ef62248bf25fb1168f1e1e1bfcdd66e82;p=rhonda%2Fimpostor.git Change all events to use interfaces and move them to a better namespace --- 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/Meeting/MeetingEndedEvent.cs b/src/Impostor.Api/Events/Game/Meeting/MeetingEndedEvent.cs deleted file mode 100644 index 2586c0b..0000000 --- a/src/Impostor.Api/Events/Game/Meeting/MeetingEndedEvent.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Impostor.Api.Games; -using Impostor.Api.Net.Inner.Objects; - -namespace Impostor.Api.Events.Meeting -{ - public class MeetingEndedEvent : IEvent - { - public MeetingEndedEvent(IGame game, IInnerMeetingHud meetingHud) - { - Game = game; - MeetingHud = meetingHud; - } - - public IGame Game { get; } - - public IInnerMeetingHud MeetingHud { get; } - } -} \ No newline at end of file diff --git a/src/Impostor.Api/Events/Game/Meeting/MeetingStartedEvent.cs b/src/Impostor.Api/Events/Game/Meeting/MeetingStartedEvent.cs deleted file mode 100644 index 8ad8964..0000000 --- a/src/Impostor.Api/Events/Game/Meeting/MeetingStartedEvent.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Impostor.Api.Games; -using Impostor.Api.Net.Inner.Objects; - -namespace Impostor.Api.Events.Meeting -{ - public class MeetingStartedEvent : IEvent - { - public MeetingStartedEvent(IGame game, IInnerMeetingHud meetingHud) - { - Game = game; - MeetingHud = meetingHud; - } - - public IGame Game { get; } - - public IInnerMeetingHud MeetingHud { get; } - } -} \ No newline at end of file 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/PlayerChatEvent.cs b/src/Impostor.Api/Events/Game/Player/PlayerChatEvent.cs deleted file mode 100644 index 5be360c..0000000 --- a/src/Impostor.Api/Events/Game/Player/PlayerChatEvent.cs +++ /dev/null @@ -1,31 +0,0 @@ -using Impostor.Api.Games; -using Impostor.Api.Net; -using Impostor.Api.Net.Inner.Objects; - -namespace Impostor.Api.Events.Player -{ - public class PlayerChatEvent : IPlayerEvent - { - public PlayerChatEvent(IGame game, IClientPlayer clientPlayer, IInnerPlayerControl playerControl, string message) - { - Game = game; - ClientPlayer = clientPlayer; - PlayerControl = playerControl; - 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.Api/Events/Game/Player/PlayerDestroyedEvent.cs deleted file mode 100644 index dc4b608..0000000 --- a/src/Impostor.Api/Events/Game/Player/PlayerDestroyedEvent.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Impostor.Api.Games; -using Impostor.Api.Net; -using Impostor.Api.Net.Inner.Objects; - -namespace Impostor.Api.Events.Player -{ - public class PlayerDestroyedEvent : IPlayerEvent - { - public PlayerDestroyedEvent(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/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/Player/PlayerSpawnedEvent.cs b/src/Impostor.Api/Events/Game/Player/PlayerSpawnedEvent.cs deleted file mode 100644 index 2078f04..0000000 --- a/src/Impostor.Api/Events/Game/Player/PlayerSpawnedEvent.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Impostor.Api.Games; -using Impostor.Api.Net; -using Impostor.Api.Net.Inner.Objects; - -namespace Impostor.Api.Events.Player -{ - public class PlayerSpawnedEvent : IPlayerEvent - { - public PlayerSpawnedEvent(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.Api/Events/Game/PlayerLeftGameEvent.cs b/src/Impostor.Api/Events/Game/PlayerLeftGameEvent.cs deleted file mode 100644 index 5947ff2..0000000 --- a/src/Impostor.Api/Events/Game/PlayerLeftGameEvent.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Impostor.Api.Games; -using Impostor.Api.Net; - -namespace Impostor.Api.Events -{ - public class PlayerLeftGameEvent : IGameEvent - { - public PlayerLeftGameEvent(IGame game, IClientPlayer player, bool isBan) - { - Game = game; - Player = player; - IsBan = isBan; - } - - public IGame Game { get; } - - public IClientPlayer Player { get; } - - public bool IsBan { 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.Server/Events/Game/GamePlayerLeftEvent.cs b/src/Impostor.Server/Events/Game/GamePlayerLeftEvent.cs new file mode 100644 index 0000000..d295103 --- /dev/null +++ b/src/Impostor.Server/Events/Game/GamePlayerLeftEvent.cs @@ -0,0 +1,22 @@ +using Impostor.Api.Events; +using Impostor.Api.Games; +using Impostor.Api.Net; + +namespace Impostor.Server.Events +{ + public class GamePlayerLeftEvent : IGamePlayerLeftEvent + { + public GamePlayerLeftEvent(IGame game, IClientPlayer player, bool isBan) + { + Game = game; + Player = player; + IsBan = isBan; + } + + public IGame Game { get; } + + public IClientPlayer Player { get; } + + public bool IsBan { get; } + } +} 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.Server/Events/Game/Meeting/MeetingEndedEvent.cs b/src/Impostor.Server/Events/Game/Meeting/MeetingEndedEvent.cs new file mode 100644 index 0000000..cf55f7d --- /dev/null +++ b/src/Impostor.Server/Events/Game/Meeting/MeetingEndedEvent.cs @@ -0,0 +1,19 @@ +using Impostor.Api.Events.Meeting; +using Impostor.Api.Games; +using Impostor.Api.Net.Inner.Objects; + +namespace Impostor.Server.Events.Meeting +{ + public class MeetingEndedEvent : IMeetingEndedEvent + { + public MeetingEndedEvent(IGame game, IInnerMeetingHud meetingHud) + { + Game = game; + MeetingHud = meetingHud; + } + + public IGame Game { get; } + + public IInnerMeetingHud MeetingHud { get; } + } +} diff --git a/src/Impostor.Server/Events/Game/Meeting/MeetingStartedEvent.cs b/src/Impostor.Server/Events/Game/Meeting/MeetingStartedEvent.cs new file mode 100644 index 0000000..aa689a3 --- /dev/null +++ b/src/Impostor.Server/Events/Game/Meeting/MeetingStartedEvent.cs @@ -0,0 +1,19 @@ +using Impostor.Api.Events.Meeting; +using Impostor.Api.Games; +using Impostor.Api.Net.Inner.Objects; + +namespace Impostor.Server.Events.Meeting +{ + public class MeetingStartedEvent : IMeetingStartedEvent + { + public MeetingStartedEvent(IGame game, IInnerMeetingHud meetingHud) + { + Game = game; + MeetingHud = meetingHud; + } + + public IGame Game { get; } + + public IInnerMeetingHud MeetingHud { get; } + } +} diff --git a/src/Impostor.Server/Events/Game/Player/PlayerChatEvent.cs b/src/Impostor.Server/Events/Game/Player/PlayerChatEvent.cs new file mode 100644 index 0000000..7b7eb22 --- /dev/null +++ b/src/Impostor.Server/Events/Game/Player/PlayerChatEvent.cs @@ -0,0 +1,26 @@ +using Impostor.Api.Events.Player; +using Impostor.Api.Games; +using Impostor.Api.Net; +using Impostor.Api.Net.Inner.Objects; + +namespace Impostor.Server.Events.Player +{ + public class PlayerChatEvent : IPlayerChatEvent + { + public PlayerChatEvent(IGame game, IClientPlayer clientPlayer, IInnerPlayerControl playerControl, string message) + { + Game = game; + ClientPlayer = clientPlayer; + PlayerControl = playerControl; + Message = message; + } + + public IGame Game { get; } + + public IClientPlayer ClientPlayer { get; } + + public IInnerPlayerControl PlayerControl { get; } + + public string Message { get; } + } +} diff --git a/src/Impostor.Server/Events/Game/Player/PlayerDestroyedEvent.cs b/src/Impostor.Server/Events/Game/Player/PlayerDestroyedEvent.cs new file mode 100644 index 0000000..69a20c9 --- /dev/null +++ b/src/Impostor.Server/Events/Game/Player/PlayerDestroyedEvent.cs @@ -0,0 +1,23 @@ +using Impostor.Api.Events.Player; +using Impostor.Api.Games; +using Impostor.Api.Net; +using Impostor.Api.Net.Inner.Objects; + +namespace Impostor.Server.Events.Player +{ + public class PlayerDestroyedEvent : IPlayerDestroyedEvent + { + public PlayerDestroyedEvent(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.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.Server/Events/Game/Player/PlayerSpawnedEvent.cs b/src/Impostor.Server/Events/Game/Player/PlayerSpawnedEvent.cs new file mode 100644 index 0000000..4b6fda1 --- /dev/null +++ b/src/Impostor.Server/Events/Game/Player/PlayerSpawnedEvent.cs @@ -0,0 +1,23 @@ +using Impostor.Api.Events.Player; +using Impostor.Api.Games; +using Impostor.Api.Net; +using Impostor.Api.Net.Inner.Objects; + +namespace Impostor.Server.Events.Player +{ + public class PlayerSpawnedEvent : IPlayerSpawnedEvent + { + public PlayerSpawnedEvent(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.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;