From: Niko233 <139348239+NikoCat233@users.noreply.github.com> Date: Mon, 24 Jun 2024 08:54:33 +0000 (+0800) Subject: Add Phantom Rpcs support X-Git-Tag: v1.10.0~7^2~1 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=83bf1c4368ae9edc39bcb58970e5980593143fab;p=rhonda%2Fimpostor.git Add Phantom Rpcs support --- diff --git a/src/Impostor.Api/Net/Messages/Rpcs/Rpc62CheckVanish.cs b/src/Impostor.Api/Net/Messages/Rpcs/Rpc62CheckVanish.cs new file mode 100644 index 0000000..eb7af15 --- /dev/null +++ b/src/Impostor.Api/Net/Messages/Rpcs/Rpc62CheckVanish.cs @@ -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 index 0000000..9a0ecc1 --- /dev/null +++ b/src/Impostor.Api/Net/Messages/Rpcs/Rpc63StartVanish.cs @@ -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 index 0000000..cfa8a6b --- /dev/null +++ b/src/Impostor.Api/Net/Messages/Rpcs/Rpc64CheckAppear.cs @@ -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 index 0000000..7f35449 --- /dev/null +++ b/src/Impostor.Api/Net/Messages/Rpcs/Rpc65StartAppear.cs @@ -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(); + } + } +} diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs index b132b99..c3d8872 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs @@ -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); }