Example #1
0
        /// <summary>
        /// Simply return true and does nothing else. It depends on the implementation of the game.
        /// </summary>
        /// <param name="chunk"></param>
        /// <returns></returns>
        public virtual async ValueTask <bool> ParseGameSpecificHeaderChunk(CustomBinaryReaderAsync binaryReader)
        {
            if (await binaryReader.ReadUInt32Async() != DemoHeaderMagic)
            {
                return(false);
            }
            NetworkVersionHistory version = (NetworkVersionHistory)await binaryReader.ReadUInt32Async();

            if (version < NetworkVersionHistory.saveFullEngineVersion)
            {
                return(false);
            }
            uint networkChecksum = await binaryReader.ReadUInt32Async();

            EngineNetworkVersionHistory engineNetworkProtocolVersion = (EngineNetworkVersionHistory)await binaryReader.ReadUInt32Async();

            uint gameNetworkProtocolVersion = await binaryReader.ReadUInt32Async();

            Guid guid = Guid.Empty;

            if (version >= NetworkVersionHistory.guidDemoHeader)
            {
                guid = new Guid((await binaryReader.ReadBytesAsync(16)).Span);
            }
            ushort major = await binaryReader.ReadUInt16Async();

            ushort minor = await binaryReader.ReadUInt16Async();

            ushort patch = await binaryReader.ReadUInt16Async();

            uint changeList = await binaryReader.ReadUInt32Async();

            string branch = await binaryReader.ReadStringAsync();

            (string, uint)[] levelNamesAndTimes = await binaryReader.ReadArrayAsync(async() => (await binaryReader.ReadStringAsync(), await binaryReader.ReadUInt32Async()));
Example #2
0
        public void HitResultTest(byte[] rawData, int bitCount, string boneName, EngineNetworkVersionHistory version)
        {
            var reader = new NetBitReader(rawData, bitCount)
            {
                EngineNetworkVersion = version
            };
            var hitResult = new FHitResult();

            hitResult.Serialize(reader);

            Assert.True(reader.AtEnd());
            Assert.False(reader.IsError);
            Assert.Equal(boneName, hitResult.BoneName);
        }
                    1463u)] // replay 6.30
        public void PlaylistInfoTest1(byte[] rawData, int bitCount,
                                      NetworkVersionHistory networkVersion, EngineNetworkVersionHistory engineNetworkVersion, uint id)
        {
            var reader = new NetBitReader(rawData, bitCount)
            {
                NetworkVersion       = networkVersion,
                EngineNetworkVersion = engineNetworkVersion
            };
            var playlist = new PlaylistInfo();

            playlist.Serialize(reader);

            Assert.Equal(id, playlist.Id);
            Assert.True(reader.AtEnd());
            Assert.False(reader.IsError);
        }
Example #4
0
        public void ParsePlayerElimTest(byte[] rawData, EngineNetworkVersionHistory version, string branch)
        {
            using var stream  = new MemoryStream(rawData);
            using var archive = new Unreal.Core.BinaryReader(stream)
                  {
                      EngineNetworkVersion = version
                  };
            var reader = new ReplayReader()
            {
                Branch = branch
            };

            reader.ParseElimination(archive, null);

            Assert.True(archive.AtEnd());
            Assert.False(archive.IsError);
        }
Example #5
0
 public Archive(EngineNetworkVersionHistory engineNetVer)
 {
     EngineNetVer = engineNetVer;
 }
Example #6
0
 public DemoHeader(NetworkVersionHistory version, uint networkChecksum, EngineNetworkVersionHistory engineNetworkProtocolVersion, uint gameNetworkProtocolVerrsion, Guid guid, ushort major, ushort minor, ushort patch, uint changeList, string branch, (string, uint)[] levelNamesAndTimes, ReplayHeaderFlags headerFlags, string[] gameSpecificData)