]> git.deb.at Git - rhonda/impostor.git/commitdiff
Fix recorder order after game creation
authorAeonLucid <aeonlucid@outlook.com>
Sat, 24 Oct 2020 02:03:21 +0000 (04:03 +0200)
committerAeonLucid <aeonlucid@outlook.com>
Sat, 24 Oct 2020 02:03:21 +0000 (04:03 +0200)
src/Impostor.Server/Recorder/ClientRecorder.cs

index b41a687b1ab7ee864f25aac6cd2d1aa0ea18526f..0917eb351f92e1e19ae8d631bb053456f93619d7 100644 (file)
@@ -12,6 +12,7 @@ namespace Impostor.Server.Recorder
         private readonly PacketRecorder _recorder;
         private bool _isFirst;
         private bool _createdGame;
+        private bool _recordAfter;
 
         public ClientRecorder(ILogger<Client> logger, ClientManager clientManager, GameManager gameManager, string name, HazelConnection connection, PacketRecorder recorder)
             : base(logger, clientManager, gameManager, name, connection)
@@ -19,6 +20,7 @@ namespace Impostor.Server.Recorder
             _recorder = recorder;
             _isFirst = true;
             _createdGame = false;
+            _recordAfter = true;
         }
 
         public override async ValueTask HandleMessageAsync(IMessageReader reader, MessageType messageType)
@@ -36,6 +38,12 @@ namespace Impostor.Server.Recorder
             // Check if we were in-game before handling the message.
             var inGame = Player?.Game != null;
 
+            if (!_recordAfter)
+            {
+                // Trigger message event.
+                await _recorder.WriteMessageAsync(this, messageCopy, messageType);
+            }
+
             // Handle the message.
             await base.HandleMessageAsync(reader, messageType);
 
@@ -48,15 +56,20 @@ namespace Impostor.Server.Recorder
             {
                 _createdGame = false;
 
-                // We created a game and are now in-game, stored that event.
+                // We created a game and are now in-game, store that event.
                 if (!inGame && Player?.Game != null)
                 {
                     await _recorder.WriteGameCreatedAsync(this, Player.Game.Code);
                 }
+
+                _recordAfter = false;
             }
 
-            // Trigger message event.
-            await _recorder.WriteMessageAsync(this, messageCopy, messageType);
+            if (_recordAfter)
+            {
+                // Trigger message event.
+                await _recorder.WriteMessageAsync(this, messageCopy, messageType);
+            }
         }
 
         public override async ValueTask HandleDisconnectAsync(string reason)