using System; using System.IO; namespace AnotherReplayReader.ReplayFile { internal sealed class ReplayChunk { private readonly byte[] _data; public uint TimeCode { get; } public byte Type { get; } public TimeSpan Time => TimeSpan.FromSeconds(TimeCode / Replay.FrameRate); public ReplayChunk(uint timeCode, BinaryReader reader) { TimeCode = timeCode; // reader.ReadUInt32(); Type = reader.ReadByte(); var chunkSize = reader.ReadInt32(); _data = reader.ReadBytes(chunkSize); if (reader.ReadInt32() != 0) { throw new InvalidDataException("Replay Chunk not ended with zero"); } } public BinaryReader GetReader() => new(new MemoryStream(_data, false)); public void WriteTo(BinaryWriter writer) { writer.Write(TimeCode); writer.Write(Type); writer.Write(_data.Length); writer.Write(_data); writer.Write(0); } } }