From 1fcd479bc141df94e0b9fab22d05477ec78b24a5 Mon Sep 17 00:00:00 2001 From: danbudworthmead Date: Wed, 28 Oct 2020 17:55:06 +0000 Subject: [PATCH] Add PlayerReportedBodyEvent (#96) --- .../Game/Player/IPlayerReportedBodyEvent.cs | 12 +++++++++ .../Game/Player/PlayerReportedBodyEvent.cs | 26 +++++++++++++++++++ .../Net/Inner/Objects/InnerPlayerControl.cs | 3 +++ 3 files changed, 41 insertions(+) create mode 100644 src/Impostor.Api/Events/Game/Player/IPlayerReportedBodyEvent.cs create mode 100644 src/Impostor.Server/Events/Game/Player/PlayerReportedBodyEvent.cs diff --git a/src/Impostor.Api/Events/Game/Player/IPlayerReportedBodyEvent.cs b/src/Impostor.Api/Events/Game/Player/IPlayerReportedBodyEvent.cs new file mode 100644 index 0000000..800d958 --- /dev/null +++ b/src/Impostor.Api/Events/Game/Player/IPlayerReportedBodyEvent.cs @@ -0,0 +1,12 @@ +using Impostor.Api.Net.Inner.Objects; + +namespace Impostor.Api.Events.Player +{ + public interface IPlayerReportedBodyEvent : IPlayerEvent + { + /// + /// Gets the player who's body got reported. + /// + IInnerPlayerControl Body { get; } + } +} diff --git a/src/Impostor.Server/Events/Game/Player/PlayerReportedBodyEvent.cs b/src/Impostor.Server/Events/Game/Player/PlayerReportedBodyEvent.cs new file mode 100644 index 0000000..6798106 --- /dev/null +++ b/src/Impostor.Server/Events/Game/Player/PlayerReportedBodyEvent.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 PlayerReportedBodyEvent : IPlayerReportedBodyEvent + { + public PlayerReportedBodyEvent(IGame game, IClientPlayer clientPlayer, IInnerPlayerControl playerControl, IInnerPlayerControl body) + { + Game = game; + ClientPlayer = clientPlayer; + PlayerControl = playerControl; + Body = body; + } + + public IGame Game { get; } + + public IClientPlayer ClientPlayer { get; } + + public IInnerPlayerControl PlayerControl { get; } + + public IInnerPlayerControl Body { get; } + } +} diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs index 68add34..213a868 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using System.Threading.Tasks; using Impostor.Api; using Impostor.Api.Events.Managers; @@ -248,6 +249,8 @@ namespace Impostor.Server.Net.Inner.Objects } var deadBodyPlayerId = reader.ReadByte(); + await _eventManager.CallAsync(new PlayerReportedBodyEvent(_game, sender, this, _game.GetClientPlayer(deadBodyPlayerId).Character)); + break; } -- 2.39.5