From 93c80c14128f3bba4378ad68f5872a5219d1395d Mon Sep 17 00:00:00 2001 From: miniduikboot Date: Fri, 12 Nov 2021 22:56:35 +0100 Subject: [PATCH] Implement Rpc 44: SetRole --- .../Net/Messages/Rpcs/Rpc44SetRole.cs | 17 +++++++++++++++++ .../Net/Inner/Objects/InnerPlayerControl.cs | 13 +++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 src/Impostor.Api/Net/Messages/Rpcs/Rpc44SetRole.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 index 0000000..fed4311 --- /dev/null +++ b/src/Impostor.Api/Net/Messages/Rpcs/Rpc44SetRole.cs @@ -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(); + } + } +} diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs index 8969d5e..cf89206 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs @@ -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); } -- 2.39.5