public void Write(TigerEntry entry) { Write(entry.Hash); Write(entry.Unknown); Write(entry.FileSize); Write(entry.ResourceType); Write(entry.Flags); Write(entry.Offset); }
public TigerEntry ReadTigerEntry() { var entry = new TigerEntry(); entry.Hash = ReadUInt64(); entry.Unknown = ReadUInt64(); entry.FileSize = ReadUInt32(); entry.ResourceType = ReadUInt32(); entry.Flags = ReadUInt32(); entry.Offset = ReadUInt32(); return(entry); }
public void AppendDataEntry(TigerBinaryWriter writer, TigerEntry entry) { writer.BaseStream.Seek(0, SeekOrigin.End); entry.Offset = (uint)writer.BaseStream.Position; var size = (int)new FileInfo(entry.Changed).Length; entry.FileSize = (uint)size; using (BinaryReader importReader = new BinaryReader(File.Open(entry.Changed, FileMode.Open))) { writer.Write(importReader.ReadBytes(size)); } }
public void ExtractFile(TigerEntry entry, string directory, TigerBinaryReader reader) { reader.BaseStream.Seek(entry.Offset, SeekOrigin.Begin); var content = reader.ReadBytes((int)entry.FileSize); string compoundName = directory + @"\" + entry.Hash.ToString("X16"); Directory.CreateDirectory(Path.GetDirectoryName(compoundName) ?? throw new InvalidOperationException()); using (BinaryWriter writer = new BinaryWriter(File.Open(compoundName, FileMode.Create))) { writer.Write(content); } }