From: js6pak Date: Tue, 21 Nov 2023 16:15:52 +0000 (+0100) Subject: Implement fungle rpcs X-Git-Tag: v1.9.0~11 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=5b14c7b64ec5cb8ae259013386f7d3f63bb611a1;p=rhonda%2Fimpostor.git Implement fungle rpcs --- diff --git a/src/Impostor.Api/Net/Messages/Rpcs/Rpc51CheckZipline.cs b/src/Impostor.Api/Net/Messages/Rpcs/Rpc51CheckZipline.cs new file mode 100644 index 0000000..b94a2fe --- /dev/null +++ b/src/Impostor.Api/Net/Messages/Rpcs/Rpc51CheckZipline.cs @@ -0,0 +1,15 @@ +namespace Impostor.Api.Net.Messages.Rpcs +{ + public static class Rpc51CheckZipline + { + public static void Serialize(IMessageWriter writer, bool fromTop) + { + writer.Write(fromTop); + } + + public static void Deserialize(IMessageReader reader, out bool fromTop) + { + fromTop = reader.ReadBoolean(); + } + } +} diff --git a/src/Impostor.Api/Net/Messages/Rpcs/Rpc52UseZipline.cs b/src/Impostor.Api/Net/Messages/Rpcs/Rpc52UseZipline.cs new file mode 100644 index 0000000..3a973f8 --- /dev/null +++ b/src/Impostor.Api/Net/Messages/Rpcs/Rpc52UseZipline.cs @@ -0,0 +1,15 @@ +namespace Impostor.Api.Net.Messages.Rpcs +{ + public static class Rpc52UseZipline + { + public static void Serialize(IMessageWriter writer, bool fromTop) + { + writer.Write(fromTop); + } + + public static void Deserialize(IMessageReader reader, out bool fromTop) + { + fromTop = reader.ReadBoolean(); + } + } +} diff --git a/src/Impostor.Api/Net/Messages/Rpcs/Rpc53TriggerSpores.cs b/src/Impostor.Api/Net/Messages/Rpcs/Rpc53TriggerSpores.cs new file mode 100644 index 0000000..1b24b3e --- /dev/null +++ b/src/Impostor.Api/Net/Messages/Rpcs/Rpc53TriggerSpores.cs @@ -0,0 +1,15 @@ +namespace Impostor.Api.Net.Messages.Rpcs +{ + public static class Rpc53TriggerSpores + { + public static void Serialize(IMessageWriter writer, int mushroomId) + { + writer.WritePacked(mushroomId); + } + + public static void Deserialize(IMessageReader reader, out int mushroomId) + { + mushroomId = reader.ReadPackedInt32(); + } + } +} diff --git a/src/Impostor.Api/Net/Messages/Rpcs/Rpc54CheckSpore.cs b/src/Impostor.Api/Net/Messages/Rpcs/Rpc54CheckSpore.cs new file mode 100644 index 0000000..1ddbf8f --- /dev/null +++ b/src/Impostor.Api/Net/Messages/Rpcs/Rpc54CheckSpore.cs @@ -0,0 +1,15 @@ +namespace Impostor.Api.Net.Messages.Rpcs +{ + public static class Rpc54CheckSpore + { + public static void Serialize(IMessageWriter writer, int mushroomId) + { + writer.WritePacked(mushroomId); + } + + public static void Deserialize(IMessageReader reader, out int mushroomId) + { + mushroomId = reader.ReadPackedInt32(); + } + } +} diff --git a/src/Impostor.Api/Net/Messages/Rpcs/Rpc55CheckShapeshift.cs b/src/Impostor.Api/Net/Messages/Rpcs/Rpc55CheckShapeshift.cs new file mode 100644 index 0000000..ef150c9 --- /dev/null +++ b/src/Impostor.Api/Net/Messages/Rpcs/Rpc55CheckShapeshift.cs @@ -0,0 +1,20 @@ +using Impostor.Api.Games; +using Impostor.Api.Net.Inner.Objects; + +namespace Impostor.Api.Net.Messages.Rpcs +{ + public static class Rpc55CheckShapeshift + { + public static void Serialize(IMessageWriter writer, IInnerPlayerControl playerControl, bool shouldAnimate) + { + writer.Write(playerControl); + writer.Write(shouldAnimate); + } + + public static void Deserialize(IMessageReader reader, IGame game, out IInnerPlayerControl? playerControl, out bool shouldAnimate) + { + playerControl = reader.ReadNetObject(game); + shouldAnimate = reader.ReadBoolean(); + } + } +} diff --git a/src/Impostor.Api/Net/Messages/Rpcs/Rpc56RejectShapeshift.cs b/src/Impostor.Api/Net/Messages/Rpcs/Rpc56RejectShapeshift.cs new file mode 100644 index 0000000..0479a68 --- /dev/null +++ b/src/Impostor.Api/Net/Messages/Rpcs/Rpc56RejectShapeshift.cs @@ -0,0 +1,13 @@ +namespace Impostor.Api.Net.Messages.Rpcs +{ + public static class Rpc56RejectShapeshift + { + public static void Serialize(IMessageWriter writer) + { + } + + public static void Deserialize(IMessageReader reader) + { + } + } +} diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs index 50a0874..d693dcb 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs @@ -398,6 +398,11 @@ namespace Impostor.Server.Net.Inner.Objects case RpcCalls.Shapeshift: { + if (!await ValidateHost(call, sender)) + { + return false; + } + if (!await ValidateRole(call, sender, PlayerInfo, RoleTypes.Shapeshifter)) { return false; @@ -410,6 +415,11 @@ namespace Impostor.Server.Net.Inner.Objects case RpcCalls.CheckMurder: { + if (!await ValidateOwnership(call, sender)) + { + return false; + } + if (!await ValidateImpostor(call, sender, PlayerInfo)) { return false; @@ -421,6 +431,11 @@ namespace Impostor.Server.Net.Inner.Objects case RpcCalls.CheckProtect: { + if (!await ValidateOwnership(call, sender)) + { + return false; + } + if (!await ValidateRole(call, sender, PlayerInfo, RoleTypes.GuardianAngel)) { return false; @@ -430,6 +445,72 @@ namespace Impostor.Server.Net.Inner.Objects break; } + case RpcCalls.CheckZipline: + { + if (!await ValidateOwnership(call, sender)) + { + return false; + } + + Rpc51CheckZipline.Deserialize(reader, out var fromTop); + break; + } + + case RpcCalls.UseZipline: + { + if (!await ValidateHost(call, sender)) + { + return false; + } + + Rpc52UseZipline.Deserialize(reader, out var fromTop); + break; + } + + case RpcCalls.TriggerSpores: + { + if (!await ValidateHost(call, sender)) + { + return false; + } + + Rpc53TriggerSpores.Deserialize(reader, out var mushroomId); + break; + } + + case RpcCalls.CheckSpore: + { + if (!await ValidateOwnership(call, sender)) + { + return false; + } + + Rpc54CheckSpore.Deserialize(reader, out var mushroomId); + break; + } + + case RpcCalls.CheckShapeshift: + { + if (!await ValidateOwnership(call, sender)) + { + return false; + } + + Rpc46Shapeshift.Deserialize(reader, Game, out var playerControl, out var shouldAnimate); + break; + } + + case RpcCalls.RejectShapeshift: + { + if (!await ValidateHost(call, sender)) + { + return false; + } + + Rpc56RejectShapeshift.Deserialize(reader); + break; + } + default: return await base.HandleRpcAsync(sender, target, call, reader); }