From: danbudworthmead Date: Thu, 12 Nov 2020 03:01:32 +0000 (+0000) Subject: PlayerSetStartCounterEvent (#113) X-Git-Tag: v1.2.2~28 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=58efba6435328a9ba4dfe715a3c7859d010d644a;p=rhonda%2Fimpostor.git PlayerSetStartCounterEvent (#113) --- 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; }