From 301a851ec3fe485633417c1309ba42ca684c43ea Mon Sep 17 00:00:00 2001 From: js6pak Date: Tue, 27 Jul 2021 17:42:11 +0200 Subject: [PATCH] Handle all handshake versions --- .../Net/Messages/C2S/HandshakeC2S.cs | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/Impostor.Api/Net/Messages/C2S/HandshakeC2S.cs b/src/Impostor.Api/Net/Messages/C2S/HandshakeC2S.cs index 1a45688..83fd647 100644 --- a/src/Impostor.Api/Net/Messages/C2S/HandshakeC2S.cs +++ b/src/Impostor.Api/Net/Messages/C2S/HandshakeC2S.cs @@ -4,27 +4,37 @@ namespace Impostor.Api.Net.Messages.C2S { public static class HandshakeC2S { - private static readonly int ExtendedHandshakeMinVersion = GameVersion.GetVersion(2021, 6, 30); - - public static void Deserialize(IMessageReader reader, out int clientVersion, out string name, out uint lastNonceReceived, out Language language, out QuickChatModes chatMode) + public static void Deserialize(IMessageReader reader, out int clientVersion, out string name, out uint? lastNonceReceived, out Language language, out QuickChatModes chatMode) { clientVersion = reader.ReadInt32(); name = reader.ReadString(); - lastNonceReceived = reader.ReadUInt32(); - // Version 2021.6.30 (aka 50537300) is the first version that includes language and chat modes - // In case the game is older than that, stop reading here. - if (clientVersion >= ExtendedHandshakeMinVersion) + if (clientVersion >= Version.V1) + { + lastNonceReceived = reader.ReadUInt32(); + } + else + { + lastNonceReceived = null; + } + + if (clientVersion >= Version.V2) { language = (Language)reader.ReadUInt32(); chatMode = (QuickChatModes)reader.ReadByte(); } else { - // This is an old version of Among Us and will fail later in the handshake due to a version mismatch language = Language.English; chatMode = QuickChatModes.FreeChatOrQuickChat; } } + + private static class Version + { + public static readonly int V1 = GameVersion.GetVersion(2021, 4, 25); + + public static readonly int V2 = GameVersion.GetVersion(2021, 6, 30); + } } } -- 2.39.5