]> git.deb.at Git - rhonda/impostor.git/commitdiff
Fix InnerShipStatus deserializing
authorminiduikboot <5243971+miniduikboot@users.noreply.github.com>
Fri, 2 Apr 2021 22:08:51 +0000 (00:08 +0200)
committerminiduikboot <5243971+miniduikboot@users.noreply.github.com>
Fri, 2 Apr 2021 22:29:05 +0000 (00:29 +0200)
3.31 now distributes them as multiple messages

This also explains the two weird bytes in HeliSabotage, so these can be
removed too

src/Impostor.Server/Net/Inner/Objects/InnerShipStatus.cs
src/Impostor.Server/Net/Inner/Objects/Systems/ShipStatus/HeliSabotageSystemType.cs

index 575a64ac26f468e52836ec7f220d8c0931d87742..c571c5a310ad97e3b9207800328fc615d4ee2201 100644 (file)
@@ -56,31 +56,13 @@ namespace Impostor.Server.Net.Inner.Objects
                 return;
             }
 
-            if (initialState)
+            while (reader.Position < reader.Length)
             {
-                // TODO: (_systems[SystemTypes.Doors] as DoorsSystemType).SetDoors();
-                foreach (var systemType in SystemTypeHelpers.AllTypes)
+                IMessageReader msgReader = reader.ReadMessage();
+                SystemTypes type = (SystemTypes)msgReader.Tag;
+                if (_systems.TryGetValue(type, out var value))
                 {
-                    if (_systems.TryGetValue(systemType, out var system))
-                    {
-                        system.Deserialize(reader, true);
-                    }
-                }
-            }
-            else
-            {
-                var count = reader.ReadPackedUInt32();
-
-                foreach (var systemType in SystemTypeHelpers.AllTypes)
-                {
-                    // TODO: Not sure what is going on here, check.
-                    if ((count & 1 << (int)(systemType & (SystemTypes.ShipTasks | SystemTypes.Doors))) != 0L)
-                    {
-                        if (_systems.TryGetValue(systemType, out var system))
-                        {
-                            system.Deserialize(reader, false);
-                        }
-                    }
+                    value.Deserialize(msgReader, initialState);
                 }
             }
         }
index f29c4b8df3e763a4e49d79b416367731c578b057..22a2a22d57e713112cb3d8b34fcff5a3ef109b7a 100644 (file)
@@ -31,9 +31,6 @@ namespace Impostor.Server.Net.Inner.Objects.Systems.ShipStatus
 
         public void Deserialize(IMessageReader reader, bool initialState)
         {
-            // TODO: Find out what these 2 bytes are used for
-            _ = reader.ReadByte();
-            _ = reader.ReadByte();
             Countdown = reader.ReadSingle();
             Timer = reader.ReadSingle();
             ActiveConsoles.Clear(); // TODO: Thread safety