From: miniduikboot Date: Sun, 30 Jun 2024 12:21:54 +0000 (+0200) Subject: Refactor Start/FinishRpc to add GameData methods X-Git-Tag: v1.10.0~16 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=4f7ef58b0080dfeec15465f5eef0e4d5e54940b3;p=rhonda%2Fimpostor.git 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. --- 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)