From: miniduikboot Date: Mon, 22 Nov 2021 22:04:56 +0000 (+0100) Subject: Add RPC's for CheckProtect and ProtectPlayer X-Git-Tag: v1.7.0~17^2~7 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=b6fe79cc8b3593912c71ab83945bad3cf5b5a32d;p=rhonda%2Fimpostor.git Add RPC's for CheckProtect and ProtectPlayer --- diff --git a/src/Impostor.Api/Net/Messages/Rpcs/Rpc45ProtectPlayer.cs b/src/Impostor.Api/Net/Messages/Rpcs/Rpc45ProtectPlayer.cs new file mode 100644 index 0000000..91d3fd1 --- /dev/null +++ b/src/Impostor.Api/Net/Messages/Rpcs/Rpc45ProtectPlayer.cs @@ -0,0 +1,21 @@ +using Impostor.Api.Games; +using Impostor.Api.Innersloth.Customization; +using Impostor.Api.Net.Inner.Objects; + +namespace Impostor.Api.Net.Messages.Rpcs +{ + public static class Rpc45ProtectPlayer + { + public static void Serialize(IMessageWriter writer, IInnerPlayerControl playerControl, ColorType color) + { + writer.Write(playerControl.NetId); + writer.Write((byte)color); + } + + public static void Deserialize(IMessageReader reader, IGame game, out IInnerPlayerControl? playerControl, out ColorType color) + { + playerControl = reader.ReadNetObject(game); + color = (ColorType)reader.ReadByte(); + } + } +} diff --git a/src/Impostor.Api/Net/Messages/Rpcs/Rpc48CheckProtect.cs b/src/Impostor.Api/Net/Messages/Rpcs/Rpc48CheckProtect.cs new file mode 100644 index 0000000..5b5408f --- /dev/null +++ b/src/Impostor.Api/Net/Messages/Rpcs/Rpc48CheckProtect.cs @@ -0,0 +1,18 @@ +using Impostor.Api.Games; +using Impostor.Api.Net.Inner.Objects; + +namespace Impostor.Api.Net.Messages.Rpcs +{ + public static class Rpc48CheckProtect + { + public static void Serialize(IMessageWriter writer, IInnerPlayerControl playerControl) + { + writer.Write(playerControl.NetId); + } + + public static void Deserialize(IMessageReader reader, IGame game, out IInnerPlayerControl? playerControl) + { + playerControl = reader.ReadNetObject(game); + } + } +} diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs index bbea324..fba3441 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs @@ -358,6 +358,17 @@ namespace Impostor.Server.Net.Inner.Objects break; } + case RpcCalls.ProtectPlayer: + { + if (!await ValidateHost(call, sender)) + { + return false; + } + + Rpc45ProtectPlayer.Deserialize(reader, Game, out _, out _); + break; + } + case RpcCalls.Shapeshift: { if (!await ValidateRole(call, sender, PlayerInfo, RoleTypes.Shapeshifter)) @@ -381,6 +392,18 @@ namespace Impostor.Server.Net.Inner.Objects return await HandleCheckMurder(sender, murdered); } + case RpcCalls.CheckProtect: + { + if (!await ValidateRole(call, sender, PlayerInfo, RoleTypes.GuardianAngel)) + { + return false; + } + + Rpc48CheckProtect.Deserialize(reader, Game, out _); + + break; + } + default: return await base.HandleRpcAsync(sender, target, call, reader); }