From: AeonLucid Date: Sun, 25 Oct 2020 23:53:04 +0000 (+0100) Subject: Fixes #82 - Expose IClientPlayer in relevant events X-Git-Tag: v1.2.2~74^2~1 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=d1daf1623a169c150111d93a0ed7551f82f4d814;p=rhonda%2Fimpostor.git Fixes #82 - Expose IClientPlayer in relevant events --- diff --git a/src/Impostor.Api/Events/Game/GameEndedEvent.cs b/src/Impostor.Api/Events/Game/GameEndedEvent.cs index 0628fcf..1dc2f63 100644 --- a/src/Impostor.Api/Events/Game/GameEndedEvent.cs +++ b/src/Impostor.Api/Events/Game/GameEndedEvent.cs @@ -8,7 +8,7 @@ namespace Impostor.Api.Events { Game = game; } - + public IGame Game { get; } } } \ No newline at end of file diff --git a/src/Impostor.Api/Events/Game/Meeting/MeetingEndedEvent.cs b/src/Impostor.Api/Events/Game/Meeting/MeetingEndedEvent.cs new file mode 100644 index 0000000..2586c0b --- /dev/null +++ b/src/Impostor.Api/Events/Game/Meeting/MeetingEndedEvent.cs @@ -0,0 +1,18 @@ +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 new file mode 100644 index 0000000..8ad8964 --- /dev/null +++ b/src/Impostor.Api/Events/Game/Meeting/MeetingStartedEvent.cs @@ -0,0 +1,18 @@ +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/IPlayerEvent.cs b/src/Impostor.Api/Events/Game/Player/IPlayerEvent.cs new file mode 100644 index 0000000..247fe64 --- /dev/null +++ b/src/Impostor.Api/Events/Game/Player/IPlayerEvent.cs @@ -0,0 +1,19 @@ +using Impostor.Api.Net; +using Impostor.Api.Net.Inner.Objects; + +namespace Impostor.Api.Events.Player +{ + public interface IPlayerEvent : IGameEvent + { + /// + /// Gets the that triggered this . + /// + IClientPlayer ClientPlayer { get; } + + /// + /// Gets the networked that triggered this . + /// This belongs to the . + /// + IInnerPlayerControl PlayerControl { get; } + } +} \ No newline at end of file diff --git a/src/Impostor.Api/Events/Game/Player/PlayerChatEvent.cs b/src/Impostor.Api/Events/Game/Player/PlayerChatEvent.cs new file mode 100644 index 0000000..5be360c --- /dev/null +++ b/src/Impostor.Api/Events/Game/Player/PlayerChatEvent.cs @@ -0,0 +1,31 @@ +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 new file mode 100644 index 0000000..dc4b608 --- /dev/null +++ b/src/Impostor.Api/Events/Game/Player/PlayerDestroyedEvent.cs @@ -0,0 +1,25 @@ +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 new file mode 100644 index 0000000..7fa0085 --- /dev/null +++ b/src/Impostor.Api/Events/Game/Player/PlayerMovementEvent.cs @@ -0,0 +1,22 @@ +// 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 new file mode 100644 index 0000000..2078f04 --- /dev/null +++ b/src/Impostor.Api/Events/Game/Player/PlayerSpawnedEvent.cs @@ -0,0 +1,25 @@ +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 new file mode 100644 index 0000000..3c165aa --- /dev/null +++ b/src/Impostor.Api/Events/Game/PlayerJoinedGameEvent.cs @@ -0,0 +1,18 @@ +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 new file mode 100644 index 0000000..5947ff2 --- /dev/null +++ b/src/Impostor.Api/Events/Game/PlayerLeftGameEvent.cs @@ -0,0 +1,21 @@ +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.Api/Events/Meeting/MeetingEndedEvent.cs b/src/Impostor.Api/Events/Meeting/MeetingEndedEvent.cs deleted file mode 100644 index 2586c0b..0000000 --- a/src/Impostor.Api/Events/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/Meeting/MeetingStartedEvent.cs b/src/Impostor.Api/Events/Meeting/MeetingStartedEvent.cs deleted file mode 100644 index 1265b5b..0000000 --- a/src/Impostor.Api/Events/Meeting/MeetingStartedEvent.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Impostor.Api.Games; -using Impostor.Api.Net.Inner.Objects; - -namespace Impostor.Api.Events -{ - 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/Player/PlayerChatEvent.cs b/src/Impostor.Api/Events/Player/PlayerChatEvent.cs deleted file mode 100644 index a5c62cd..0000000 --- a/src/Impostor.Api/Events/Player/PlayerChatEvent.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Impostor.Api.Games; -using Impostor.Api.Net.Inner.Objects; - -namespace Impostor.Api.Events.Player -{ - public class PlayerChatEvent : IGameEvent - { - public PlayerChatEvent(IGame game, IInnerPlayerControl playerControl, string message) - { - Game = game; - PlayerControl = playerControl; - Message = message; - } - - public IGame Game { get; } - - public IInnerPlayerControl PlayerControl { get; } - - public string Message { get; } - } -} \ No newline at end of file diff --git a/src/Impostor.Api/Events/Player/PlayerDestroyedEvent.cs b/src/Impostor.Api/Events/Player/PlayerDestroyedEvent.cs deleted file mode 100644 index fcbb562..0000000 --- a/src/Impostor.Api/Events/Player/PlayerDestroyedEvent.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Impostor.Api.Games; -using Impostor.Api.Net.Inner.Objects; - -namespace Impostor.Api.Events.Player -{ - public class PlayerDestroyedEvent : IGameEvent - { - public PlayerDestroyedEvent(IGame game, IInnerPlayerControl playerControl) - { - Game = game; - PlayerControl = playerControl; - } - - public IGame Game { get; } - - public IInnerPlayerControl PlayerControl { get; } - } -} \ No newline at end of file diff --git a/src/Impostor.Api/Events/Player/PlayerJoinedGameEvent.cs b/src/Impostor.Api/Events/Player/PlayerJoinedGameEvent.cs deleted file mode 100644 index 236580b..0000000 --- a/src/Impostor.Api/Events/Player/PlayerJoinedGameEvent.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Impostor.Api.Games; -using Impostor.Api.Net; - -namespace Impostor.Api.Events.Player -{ - 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/Player/PlayerLeftGameEvent.cs b/src/Impostor.Api/Events/Player/PlayerLeftGameEvent.cs deleted file mode 100644 index 925cab3..0000000 --- a/src/Impostor.Api/Events/Player/PlayerLeftGameEvent.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Impostor.Api.Games; -using Impostor.Api.Net; - -namespace Impostor.Api.Events.Player -{ - 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.Api/Events/Player/PlayerMovementEvent.cs b/src/Impostor.Api/Events/Player/PlayerMovementEvent.cs deleted file mode 100644 index 735328f..0000000 --- a/src/Impostor.Api/Events/Player/PlayerMovementEvent.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Impostor.Api.Games; - -namespace Impostor.Api.Events.Player -{ - public class PlayerMovementEvent : IGameEvent - { - public PlayerMovementEvent(IGame game) - { - Game = game; - } - - public IGame Game { get; } - } -} \ No newline at end of file diff --git a/src/Impostor.Api/Events/Player/PlayerSpawnedEvent.cs b/src/Impostor.Api/Events/Player/PlayerSpawnedEvent.cs deleted file mode 100644 index 5dcedd2..0000000 --- a/src/Impostor.Api/Events/Player/PlayerSpawnedEvent.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Impostor.Api.Games; -using Impostor.Api.Net.Inner.Objects; - -namespace Impostor.Api.Events.Player -{ - public class PlayerSpawnedEvent : IGameEvent - { - public PlayerSpawnedEvent(IGame game, IInnerPlayerControl playerControl) - { - Game = game; - PlayerControl = playerControl; - } - - public IGame Game { get; } - - public IInnerPlayerControl PlayerControl { get; } - } -} \ No newline at end of file diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs index 458d4bd..c55f2ec 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs @@ -292,7 +292,7 @@ namespace Impostor.Server.Net.Inner.Objects var chat = reader.ReadString(); - await _eventManager.CallAsync(new PlayerChatEvent(_game, this, chat)); + await _eventManager.CallAsync(new PlayerChatEvent(_game, sender, this, chat)); break; } diff --git a/src/Impostor.Server/Net/State/Game.Data.cs b/src/Impostor.Server/Net/State/Game.Data.cs index 32cff8b..3fd4b50 100644 --- a/src/Impostor.Server/Net/State/Game.Data.cs +++ b/src/Impostor.Server/Net/State/Game.Data.cs @@ -4,6 +4,7 @@ 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; @@ -81,12 +82,14 @@ namespace Impostor.Server.Net.State case InnerPlayerControl control: { // Hook up InnerPlayerControl <-> IClientPlayer. - if (TryGetPlayer(control.OwnerId, out var player)) + if (!TryGetPlayer(control.OwnerId, out var player)) { - player.Character = control; - player.DisableSpawnTimeout(); + throw new ImpostorException("Failed to find player that spawned the InnerPlayerControl"); } + player.Character = control; + player.DisableSpawnTimeout(); + // Hook up InnerPlayerControl <-> InnerPlayerControl.PlayerInfo. control.PlayerInfo = GameNet.GameData.GetPlayerById(control.PlayerId)!; @@ -100,7 +103,7 @@ namespace Impostor.Server.Net.State control.PlayerInfo!.Controller = control; } - await _eventManager.CallAsync(new PlayerSpawnedEvent(this, control)); + await _eventManager.CallAsync(new PlayerSpawnedEvent(this, player, control)); break; } @@ -149,7 +152,7 @@ namespace Impostor.Server.Net.State player.Character = null; } - await _eventManager.CallAsync(new PlayerDestroyedEvent(this, control)); + await _eventManager.CallAsync(new PlayerDestroyedEvent(this, player, control)); break; }