From 4f7ef58b0080dfeec15465f5eef0e4d5e54940b3 Mon Sep 17 00:00:00 2001 From: miniduikboot Date: Sun, 30 Jun 2024 14:21:54 +0200 Subject: [PATCH] Refactor Start/FinishRpc to add GameData methods Rpc's are a specific sort of GameData packets, so it makes sense to split and extract a method for sending GameData packets from these functions. --- .../Net/State/Game.Outgoing.cs | 32 +++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/src/Impostor.Server/Net/State/Game.Outgoing.cs b/src/Impostor.Server/Net/State/Game.Outgoing.cs index d2bbe06..47aa9e9 100644 --- a/src/Impostor.Server/Net/State/Game.Outgoing.cs +++ b/src/Impostor.Server/Net/State/Game.Outgoing.cs @@ -39,6 +39,27 @@ namespace Impostor.Server.Net.State } public IMessageWriter StartRpc(uint targetNetId, RpcCalls callId, int? targetClientId = null, MessageType type = MessageType.Reliable) + { + var writer = StartGameData(targetClientId, type); + + writer.StartMessage(GameDataTag.RpcFlag); + writer.WritePacked(targetNetId); + writer.Write((byte)callId); + + return writer; + } + + public ValueTask FinishRpcAsync(IMessageWriter writer, int? targetClientId = null) + { + writer.EndMessage(); + return FinishGameDataAsync(writer, targetClientId); + } + + /// Start a GameData(To) message. + /// The client to target if needed, `null` otherwise. + /// The type of message to send, defaults to reliable. + /// MessageWriter that should be handed back to . + private IMessageWriter StartGameData(int? targetClientId = null, MessageType type = MessageType.Reliable) { var writer = MessageWriter.Get(type); @@ -54,17 +75,16 @@ namespace Impostor.Server.Net.State writer.WritePacked(targetClientId.Value); } - writer.StartMessage(GameDataTag.RpcFlag); - writer.WritePacked(targetNetId); - writer.Write((byte)callId); - return writer; } - public ValueTask FinishRpcAsync(IMessageWriter writer, int? targetClientId = null) + /// Finalize and send a GameData packet. + /// MessageWriter received from . + /// Same target ClientId passed to StartGameData. + /// Task that sends the packet. + private ValueTask FinishGameDataAsync(IMessageWriter writer, int? targetClientId = null) { writer.EndMessage(); - writer.EndMessage(); return targetClientId.HasValue ? SendToAsync(writer, targetClientId.Value) -- 2.39.5