Example #1
0
 public void Write(TigerEntry entry)
 {
     Write(entry.Hash);
     Write(entry.Unknown);
     Write(entry.FileSize);
     Write(entry.ResourceType);
     Write(entry.Flags);
     Write(entry.Offset);
 }
Example #2
0
        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);
        }
Example #3
0
        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));
            }
        }
Example #4
0
        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);
            }
        }