From: AeonLucid Date: Fri, 25 Sep 2020 20:15:16 +0000 (+0200) Subject: More refactoring X-Git-Tag: v1.1.0~1^2~44 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=7276e5692fa42d62d66818a408818d30d121fe6b;p=rhonda%2Fimpostor.git More refactoring --- diff --git a/src/Impostor.Server/Net/Client.cs b/src/Impostor.Server/Net/Client.cs index 72e3558..780234e 100644 --- a/src/Impostor.Server/Net/Client.cs +++ b/src/Impostor.Server/Net/Client.cs @@ -91,13 +91,13 @@ namespace Impostor.Server.Net private void OnMessageReceived(MessageReader message, SendOption sendOption) { - var flag = (RequestFlag) message.Tag; + var flag = message.Tag; Logger.Verbose("[{0}] Server got {1}.", Id, flag); switch (flag) { - case RequestFlag.HostGame: + case MessageFlags.HostGame: { // Read game settings. var gameInfo = Message00HostGame.Deserialize(message); @@ -120,10 +120,12 @@ namespace Impostor.Server.Net break; } - case RequestFlag.JoinGame: + case MessageFlags.JoinGame: { - var gameCode = message.ReadInt32(); - var unknown = message.ReadByte(); + Message01JoinGame.Deserialize(message, + out var gameCode, + out var unknown); + var game = _gameManager.Find(gameCode); if (game == null) { @@ -135,7 +137,7 @@ namespace Impostor.Server.Net break; } - case RequestFlag.StartGame: + case MessageFlags.StartGame: { if (!IsPacketAllowed(message, true)) { @@ -147,25 +149,26 @@ namespace Impostor.Server.Net } // No idea how this flag is triggered. - case RequestFlag.RemoveGame: + case MessageFlags.RemoveGame: break; - case RequestFlag.RemovePlayer: + case MessageFlags.RemovePlayer: { if (!IsPacketAllowed(message, true)) { return; } - - var playerId = message.ReadPackedInt32(); - var reason = message.ReadByte(); + + Message04RemovePlayer.Deserialize(message, + out var playerId, + out var reason); Player.Game.HandleRemovePlayer(playerId, (DisconnectReason) reason); break; } - case RequestFlag.GameData: - case RequestFlag.GameDataTo: + case MessageFlags.GameData: + case MessageFlags.GameDataTo: { if (!IsPacketAllowed(message, false)) { @@ -175,7 +178,7 @@ namespace Impostor.Server.Net // Broadcast packet to all other players. using (var writer = MessageWriter.Get(sendOption)) { - if (flag == RequestFlag.GameDataTo) + if (flag == MessageFlags.GameDataTo) { var target = message.ReadPackedInt32(); writer.CopyFrom(message); @@ -190,7 +193,7 @@ namespace Impostor.Server.Net break; } - case RequestFlag.EndGame: + case MessageFlags.EndGame: { if (!IsPacketAllowed(message, true)) { @@ -201,33 +204,36 @@ namespace Impostor.Server.Net break; } - case RequestFlag.AlterGame: + case MessageFlags.AlterGame: { if (!IsPacketAllowed(message, true)) { return; } - if (message.ReadByte() != (byte) AlterGameTags.ChangePrivacy) + Message10AlterGame.Deserialize(message, + out var gameTag, + out var value); + + if (gameTag != AlterGameTags.ChangePrivacy) { return; } - var isPublic = message.ReadByte() == 1; - - Player.Game.HandleAlterGame(message, Player, isPublic); + Player.Game.HandleAlterGame(message, Player, value); break; } - case RequestFlag.KickPlayer: + case MessageFlags.KickPlayer: { if (!IsPacketAllowed(message, true)) { return; } - var playerId = message.ReadPackedInt32(); - var isBan = message.ReadBoolean(); + Message11KickPlayer.Deserialize(message, + out var playerId, + out var isBan); Player.Game.HandleKickPlayer(playerId, isBan); break; @@ -239,9 +245,9 @@ namespace Impostor.Server.Net } #if DEBUG - if (flag != RequestFlag.GameData && - flag != RequestFlag.GameDataTo && - flag != RequestFlag.EndGame && + if (flag != MessageFlags.GameData && + flag != MessageFlags.GameDataTo && + flag != MessageFlags.EndGame && message.Position < message.Length) { Logger.Warning("Server did not consume all bytes from {0} ({1} < {2}).", diff --git a/src/Impostor.Server/Net/Messages/Message01JoinGame.cs b/src/Impostor.Server/Net/Messages/Message01JoinGame.cs index badee4f..e478e83 100644 --- a/src/Impostor.Server/Net/Messages/Message01JoinGame.cs +++ b/src/Impostor.Server/Net/Messages/Message01JoinGame.cs @@ -42,5 +42,11 @@ namespace Impostor.Server.Net.Messages writer.EndMessage(); } + + public static void Deserialize(MessageReader reader, out int gameCode, out byte unknown) + { + gameCode = reader.ReadInt32(); + unknown = reader.ReadByte(); + } } } \ No newline at end of file diff --git a/src/Impostor.Server/Net/Messages/Message04RemovePlayer.cs b/src/Impostor.Server/Net/Messages/Message04RemovePlayer.cs index b572c21..3c82c1b 100644 --- a/src/Impostor.Server/Net/Messages/Message04RemovePlayer.cs +++ b/src/Impostor.Server/Net/Messages/Message04RemovePlayer.cs @@ -21,5 +21,11 @@ namespace Impostor.Server.Net.Messages writer.Write((byte) reason); writer.EndMessage(); } + + public static void Deserialize(MessageReader reader, out int playerId, out byte reason) + { + playerId = reader.ReadPackedInt32(); + reason = reader.ReadByte(); + } } } \ No newline at end of file diff --git a/src/Impostor.Server/Net/Messages/Message10AlterGame.cs b/src/Impostor.Server/Net/Messages/Message10AlterGame.cs index 3b77548..f4f08a8 100644 --- a/src/Impostor.Server/Net/Messages/Message10AlterGame.cs +++ b/src/Impostor.Server/Net/Messages/Message10AlterGame.cs @@ -1,4 +1,5 @@ using Hazel; +using Impostor.Shared.Innersloth.Data; namespace Impostor.Server.Net.Messages { @@ -15,5 +16,11 @@ namespace Impostor.Server.Net.Messages writer.Write(gameCode); writer.EndMessage(); } + + public static void Deserialize(MessageReader reader, out AlterGameTags gameTag, out bool value) + { + gameTag = (AlterGameTags) reader.ReadByte(); + value = reader.ReadBoolean(); + } } } \ No newline at end of file diff --git a/src/Impostor.Server/Net/Messages/Message11KickPlayer.cs b/src/Impostor.Server/Net/Messages/Message11KickPlayer.cs index dde4726..e8af2bb 100644 --- a/src/Impostor.Server/Net/Messages/Message11KickPlayer.cs +++ b/src/Impostor.Server/Net/Messages/Message11KickPlayer.cs @@ -17,5 +17,11 @@ namespace Impostor.Server.Net.Messages writer.Write(isBan); writer.EndMessage(); } + + public static void Deserialize(MessageReader reader, out int playerId, out bool isBan) + { + playerId = reader.ReadPackedInt32(); + isBan = reader.ReadBoolean(); + } } } \ No newline at end of file diff --git a/src/Impostor.Shared/Innersloth/Data/RequestFlag.cs b/src/Impostor.Shared/Innersloth/Data/RequestFlag.cs deleted file mode 100644 index d07eefa..0000000 --- a/src/Impostor.Shared/Innersloth/Data/RequestFlag.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Impostor.Shared.Innersloth.Data -{ - public enum RequestFlag : byte - { - HostGame = 0, - JoinGame = 1, - StartGame = 2, - RemoveGame = 3, - RemovePlayer = 4, - GameData = 5, - GameDataTo = 6, - JoinedGame = 7, - EndGame = 8, - GetGameList = 9, - AlterGame = 10, - KickPlayer = 11, - WaitForHost = 12, - Redirect = 13, - ReselectServer = 14, - GetGameListV2 = 16, - } -} \ No newline at end of file