From 58efba6435328a9ba4dfe715a3c7859d010d644a Mon Sep 17 00:00:00 2001 From: danbudworthmead Date: Thu, 12 Nov 2020 03:01:32 +0000 Subject: [PATCH] PlayerSetStartCounterEvent (#113) --- .../Player/IPlayerSetStartCounterEvent.cs | 10 +++++++ .../Game/Player/PlayerSetStartCounterEvent.cs | 26 +++++++++++++++++++ .../Net/Inner/Objects/InnerPlayerControl.cs | 7 +++++ 3 files changed, 43 insertions(+) create mode 100644 src/Impostor.Api/Events/Game/Player/IPlayerSetStartCounterEvent.cs create mode 100644 src/Impostor.Server/Events/Game/Player/PlayerSetStartCounterEvent.cs diff --git a/src/Impostor.Api/Events/Game/Player/IPlayerSetStartCounterEvent.cs b/src/Impostor.Api/Events/Game/Player/IPlayerSetStartCounterEvent.cs new file mode 100644 index 0000000..d7fc562 --- /dev/null +++ b/src/Impostor.Api/Events/Game/Player/IPlayerSetStartCounterEvent.cs @@ -0,0 +1,10 @@ +namespace Impostor.Api.Events.Player +{ + public interface IPlayerSetStartCounterEvent : IPlayerEvent + { + /// + /// Gets the current time of the start counter. + /// + byte Value { get; } + } +} diff --git a/src/Impostor.Server/Events/Game/Player/PlayerSetStartCounterEvent.cs b/src/Impostor.Server/Events/Game/Player/PlayerSetStartCounterEvent.cs new file mode 100644 index 0000000..821aa2d --- /dev/null +++ b/src/Impostor.Server/Events/Game/Player/PlayerSetStartCounterEvent.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.Game.Player +{ + public class PlayerSetStartCounterEvent : IPlayerSetStartCounterEvent + { + public PlayerSetStartCounterEvent(IGame game, IClientPlayer clientPlayer, IInnerPlayerControl playerControl, byte value) + { + Game = game; + ClientPlayer = clientPlayer; + PlayerControl = playerControl; + Value = value; + } + + public byte Value { get; } + + public IClientPlayer ClientPlayer { get; } + + public IInnerPlayerControl PlayerControl { get; } + + public IGame Game { get; } + } +} diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs index 3270064..df4f0b5 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs @@ -6,6 +6,7 @@ using Impostor.Api.Events.Managers; using Impostor.Api.Innersloth; using Impostor.Api.Net; using Impostor.Api.Net.Messages; +using Impostor.Server.Events.Game.Player; using Impostor.Server.Events.Player; using Impostor.Server.Net.Inner.Objects.Components; using Impostor.Server.Net.State; @@ -397,6 +398,12 @@ namespace Impostor.Server.Net.Inner.Objects // Is either start countdown or byte.MaxValue var secondsLeft = reader.ReadByte(); + + if (secondsLeft < byte.MaxValue) + { + await _eventManager.CallAsync(new PlayerSetStartCounterEvent(_game, sender, this, secondsLeft)); + } + break; } -- 2.39.5