예제 #1
0
        public void Unpack()
        {
            using (var reader = new BinaryReader(new FileStream(PackedFilePath, FileMode.Open, FileAccess.Read, FileShare.Read), Encoding.Unicode, false))
            {
                reader.BaseStream.Seek(-4, SeekOrigin.End);

                var headerOffset = reader.ReadInt32();

                reader.BaseStream.Seek(headerOffset, SeekOrigin.Begin);

                if (reader.ReadInt32() != PackedFileMagicHeader)
                {
                    throw new Exception("Packed file magic header is invalid!");
                }

                if (reader.ReadInt32() != Version)
                {
                    throw new Exception("Packed file version is invalid!");
                }

                var entryCount = reader.ReadInt32();

                for (var i = 0; i < entryCount; ++i)
                {
                    var entry = new AwesomeFileEntry();

                    entry.ReadHeader(reader);

                    using (var fileStream = new FileStream(Path.Combine(OutputFolderPath, entry.Name), FileMode.Create, FileAccess.Write, FileShare.None))
                        entry.ReadData(reader, fileStream);
                }
            }
        }
예제 #2
0
 public void AddFileEntry(AwesomeFileEntry entry)
 {
     FileEntries.Add(entry);
 }