]> git.deb.at Git - rhonda/impostor.git/commitdiff
Add PlayerExileEvent and PlayerMurderEvent (#93)
authorSaghetti0 <60995055+Saghetti0@users.noreply.github.com>
Wed, 28 Oct 2020 00:00:47 +0000 (17:00 -0700)
committerGitHub <noreply@github.com>
Wed, 28 Oct 2020 00:00:47 +0000 (01:00 +0100)
src/Impostor.Api/Events/Game/Player/IPlayerExileEvent.cs [new file with mode: 0644]
src/Impostor.Api/Events/Game/Player/IPlayerMurderEvent.cs [new file with mode: 0644]
src/Impostor.Server/Events/Game/Player/PlayerExileEvent.cs [new file with mode: 0644]
src/Impostor.Server/Events/Game/Player/PlayerMurderEvent.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs

diff --git a/src/Impostor.Api/Events/Game/Player/IPlayerExileEvent.cs b/src/Impostor.Api/Events/Game/Player/IPlayerExileEvent.cs
new file mode 100644 (file)
index 0000000..2f6fa1f
--- /dev/null
@@ -0,0 +1,10 @@
+namespace Impostor.Api.Events.Player
+{
+    /// <summary>
+    /// Called whenever a player gets exiled (voted out)
+    /// Never actually gets called, for future use.
+    /// </summary>
+    public interface IPlayerExileEvent : IPlayerEvent
+    {
+    }
+}
diff --git a/src/Impostor.Api/Events/Game/Player/IPlayerMurderEvent.cs b/src/Impostor.Api/Events/Game/Player/IPlayerMurderEvent.cs
new file mode 100644 (file)
index 0000000..c47c00b
--- /dev/null
@@ -0,0 +1,12 @@
+using Impostor.Api.Net.Inner.Objects;
+
+namespace Impostor.Api.Events.Player
+{
+    public interface IPlayerMurderEvent : IPlayerEvent
+    {
+        /// <summary>
+        ///     Gets the player who got murdered.
+        /// </summary>
+        IInnerPlayerControl Victim { get; }
+    }
+}
diff --git a/src/Impostor.Server/Events/Game/Player/PlayerExileEvent.cs b/src/Impostor.Server/Events/Game/Player/PlayerExileEvent.cs
new file mode 100644 (file)
index 0000000..a8660da
--- /dev/null
@@ -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 PlayerExileEvent : IPlayerExileEvent
+    {
+        public PlayerExileEvent(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/PlayerMurderEvent.cs b/src/Impostor.Server/Events/Game/Player/PlayerMurderEvent.cs
new file mode 100644 (file)
index 0000000..ca64c35
--- /dev/null
@@ -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 PlayerMurderEvent : IPlayerMurderEvent
+    {
+        public PlayerMurderEvent(IGame game, IClientPlayer clientPlayer, IInnerPlayerControl playerControl, IInnerPlayerControl victim)
+        {
+            Game = game;
+            ClientPlayer = clientPlayer;
+            PlayerControl = playerControl;
+            Victim = victim;
+        }
+
+        public IGame Game { get; }
+
+        public IClientPlayer ClientPlayer { get; }
+
+        public IInnerPlayerControl PlayerControl { get; }
+
+        public IInnerPlayerControl Victim { get; }
+    }
+}
index 74aa531b53afd1e2622fc55b7e84365f46d1bd26..68add3473b55b389854ca46086bb5c7d694892c5 100644 (file)
@@ -138,6 +138,8 @@ namespace Impostor.Server.Net.Inner.Objects
 
                     // TODO: Not hit?
                     Die(DeathReason.Exile);
+
+                    await _eventManager.CallAsync(new PlayerExileEvent(_game, sender, this));
                     break;
                 }
 
@@ -271,6 +273,7 @@ namespace Impostor.Server.Net.Inner.Objects
                     if (!player.PlayerInfo.IsDead)
                     {
                         player.Die(DeathReason.Kill);
+                        await _eventManager.CallAsync(new PlayerMurderEvent(_game, sender, this, player));
                     }
 
                     break;
@@ -418,4 +421,4 @@ namespace Impostor.Server.Net.Inner.Objects
             PlayerInfo.LastDeathReason = reason;
         }
     }
-}
\ No newline at end of file
+}