]> git.deb.at Git - rhonda/impostor.git/commitdiff
Implement Rpc 44: SetRole
authorminiduikboot <mini@duikbo.at>
Fri, 12 Nov 2021 21:56:35 +0000 (22:56 +0100)
committerminiduikboot <mini@duikbo.at>
Fri, 12 Nov 2021 21:56:35 +0000 (22:56 +0100)
src/Impostor.Api/Net/Messages/Rpcs/Rpc44SetRole.cs [new file with mode: 0644]
src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs

diff --git a/src/Impostor.Api/Net/Messages/Rpcs/Rpc44SetRole.cs b/src/Impostor.Api/Net/Messages/Rpcs/Rpc44SetRole.cs
new file mode 100644 (file)
index 0000000..fed4311
--- /dev/null
@@ -0,0 +1,17 @@
+using Impostor.Api.Innersloth;
+
+namespace Impostor.Api.Net.Messages.Rpcs
+{
+    public static class Rpc44SetRole
+    {
+        public static void Serialize(IMessageWriter writer, RoleTypes role)
+        {
+            writer.Write((ushort)role);
+        }
+
+        public static void Deserialize(IMessageReader reader, out RoleTypes role)
+        {
+            role = (RoleTypes)reader.ReadUInt16();
+        }
+    }
+}
index 8969d5ef7a051b7ea371f6f62f87cfb96953bff0..cf8920686fd2e2c75086c0b9751feb88bbdf6e80 100644 (file)
@@ -342,6 +342,19 @@ namespace Impostor.Server.Net.Inner.Objects
                     break;
                 }
 
+                case RpcCalls.SetRole:
+                {
+                    if (!await ValidateHost(call, sender))
+                    {
+                        return false;
+                    }
+
+                    Rpc44SetRole.Deserialize(reader, out var role);
+                    PlayerInfo.RoleType = role;
+
+                    break;
+                }
+
                 default:
                     return await base.HandleRpcAsync(sender, target, call, reader);
             }