]> git.deb.at Git - rhonda/impostor.git/commitdiff
Add Phantom Rpcs support
authorNiko233 <139348239+NikoCat233@users.noreply.github.com>
Mon, 24 Jun 2024 08:54:33 +0000 (16:54 +0800)
committerminiduikboot <mini@duikbo.at>
Tue, 20 Aug 2024 19:41:38 +0000 (21:41 +0200)
src/Impostor.Api/Net/Messages/Rpcs/Rpc62CheckVanish.cs [new file with mode: 0644]
src/Impostor.Api/Net/Messages/Rpcs/Rpc63StartVanish.cs [new file with mode: 0644]
src/Impostor.Api/Net/Messages/Rpcs/Rpc64CheckAppear.cs [new file with mode: 0644]
src/Impostor.Api/Net/Messages/Rpcs/Rpc65StartAppear.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs

diff --git a/src/Impostor.Api/Net/Messages/Rpcs/Rpc62CheckVanish.cs b/src/Impostor.Api/Net/Messages/Rpcs/Rpc62CheckVanish.cs
new file mode 100644 (file)
index 0000000..eb7af15
--- /dev/null
@@ -0,0 +1,15 @@
+namespace Impostor.Api.Net.Messages.Rpcs
+{
+    public static class Rpc62CheckVanish
+    {
+        public static void Serialize(IMessageWriter writer, float maxDuration)
+        {
+            writer.Write(maxDuration);
+        }
+
+        public static void Deserialize(IMessageReader reader, out float maxDuration)
+        {
+            maxDuration = reader.ReadSingle();
+        }
+    }
+}
diff --git a/src/Impostor.Api/Net/Messages/Rpcs/Rpc63StartVanish.cs b/src/Impostor.Api/Net/Messages/Rpcs/Rpc63StartVanish.cs
new file mode 100644 (file)
index 0000000..9a0ecc1
--- /dev/null
@@ -0,0 +1,13 @@
+namespace Impostor.Api.Net.Messages.Rpcs
+{
+    public static class Rpc63StartVanish
+    {
+        public static void Serialize(IMessageWriter writer)
+        {
+        }
+
+        public static void Deserialize(IMessageReader reader)
+        {
+        }
+    }
+}
diff --git a/src/Impostor.Api/Net/Messages/Rpcs/Rpc64CheckAppear.cs b/src/Impostor.Api/Net/Messages/Rpcs/Rpc64CheckAppear.cs
new file mode 100644 (file)
index 0000000..cfa8a6b
--- /dev/null
@@ -0,0 +1,15 @@
+namespace Impostor.Api.Net.Messages.Rpcs
+{
+    public static class Rpc64CheckAppear
+    {
+        public static void Serialize(IMessageWriter writer, bool shouldAnimate)
+        {
+            writer.Write(shouldAnimate);
+        }
+
+        public static void Deserialize(IMessageReader reader, out bool shouldAnimate)
+        {
+            shouldAnimate = reader.ReadBoolean();
+        }
+    }
+}
diff --git a/src/Impostor.Api/Net/Messages/Rpcs/Rpc65StartAppear.cs b/src/Impostor.Api/Net/Messages/Rpcs/Rpc65StartAppear.cs
new file mode 100644 (file)
index 0000000..7f35449
--- /dev/null
@@ -0,0 +1,15 @@
+namespace Impostor.Api.Net.Messages.Rpcs
+{
+    public static class Rpc65StartAppear
+    {
+        public static void Serialize(IMessageWriter writer, bool shouldAnimate)
+        {
+            writer.Write(shouldAnimate);
+        }
+
+        public static void Deserialize(IMessageReader reader, out bool shouldAnimate)
+        {
+            shouldAnimate = reader.ReadBoolean();
+        }
+    }
+}
index b132b99dc166f9e7ef3c670025301f1a3302612d..c3d88727dfcabc616426f8fde92a46fcd890300a 100644 (file)
@@ -511,7 +511,7 @@ namespace Impostor.Server.Net.Inner.Objects
                         return false;
                     }
 
-                    Rpc55CheckShapeshift.Deserialize(reader, Game, out var playerControl, out var shouldAnimate);
+                    Rpc55CheckShapeshift.Deserialize(reader, Game, out var playerControl, out _);
                     break;
                 }
 
@@ -526,6 +526,56 @@ namespace Impostor.Server.Net.Inner.Objects
                     break;
                 }
 
+                case RpcCalls.CheckVanish:
+                {
+                    if (!await ValidateOwnership(call, sender) ||
+                        !await ValidateRole(call, sender, PlayerInfo, RoleTypes.Phantom) ||
+                        !await ValidateCmd(call, sender, target))
+                    {
+                        return false;
+                    }
+
+                    Rpc62CheckVanish.Deserialize(reader, out var maxDuration);
+                    break;
+                }
+
+                case RpcCalls.StartVanish:
+                {
+                    if (!await ValidateHost(call, sender) ||
+                        !await ValidateBroadcast(call, sender, target))
+                    {
+                        return false;
+                    }
+
+                    Rpc63StartVanish.Deserialize(reader);
+                    break;
+                }
+
+                case RpcCalls.CheckAppear:
+                {
+                    if (!await ValidateOwnership(call, sender) ||
+                        !await ValidateRole(call, sender, PlayerInfo, RoleTypes.Phantom) ||
+                        !await ValidateCmd(call, sender, target))
+                    {
+                        return false;
+                    }
+
+                    Rpc64CheckAppear.Deserialize(reader, out bool shouldAnimate);
+                    break;
+                }
+
+                case RpcCalls.StartAppear:
+                {
+                    if (!await ValidateHost(call, sender) ||
+                        !await ValidateBroadcast(call, sender, target))
+                    {
+                        return false;
+                    }
+
+                    Rpc65StartAppear.Deserialize(reader, out _);
+                    break;
+                }
+
                 default:
                     return await base.HandleRpcAsync(sender, target, call, reader);
             }