]> git.deb.at Git - rhonda/impostor.git/commitdiff
More refactoring
authorAeonLucid <aeonlucid@gmail.com>
Fri, 25 Sep 2020 20:15:16 +0000 (22:15 +0200)
committerAeonLucid <aeonlucid@gmail.com>
Fri, 25 Sep 2020 20:15:16 +0000 (22:15 +0200)
src/Impostor.Server/Net/Client.cs
src/Impostor.Server/Net/Messages/Message01JoinGame.cs
src/Impostor.Server/Net/Messages/Message04RemovePlayer.cs
src/Impostor.Server/Net/Messages/Message10AlterGame.cs
src/Impostor.Server/Net/Messages/Message11KickPlayer.cs
src/Impostor.Shared/Innersloth/Data/RequestFlag.cs [deleted file]

index 72e35581db8b04552fafbc39152e15673254661a..780234ea1897021fe6cdee057eca0c6ea2a78622 100644 (file)
@@ -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}).",
index badee4f27dee8bcc98d4a0c60533042327ed85f0..e478e83c2b6733f8a30173c3e017396ec82d5817 100644 (file)
@@ -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
index b572c2184988017f65c798d5e0167df4da4198ff..3c82c1b36740ec3c1a3b6f54640c344675083d5c 100644 (file)
@@ -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
index 3b77548b730a0ce6d5ace55e1ddf1ab47b3a863c..f4f08a86227b536a1d9fb3ec2bcf051e7db39f44 100644 (file)
@@ -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
index dde472699ad80c39dec26a8069185f2ab6d07d7e..e8af2bbd270006d9011183edc2732ef56187de4c 100644 (file)
@@ -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 (file)
index d07eefa..0000000
+++ /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