示例#1
0
        public void Save(System.IO.Stream stream)
        {
            //Reload our sarc data from the files and save active files
            SarcData.Files.Clear();
            foreach (FileEntry file in files)
            {
                file.SaveFileFormat();

                if (SarcData.HashOnly)
                {
                    SarcData.Files.Add(file.HashName, file.FileData);
                }
                else
                {
                    SarcData.Files.Add(file.FileName, file.FileData);
                }
            }

            //Save data to stream
            var saved = SARC_Parser.PackN(SarcData);

            using (var writer = new FileWriter(stream)) {
                writer.Write(saved.Item2);
            }

            //Save alignment to compression type yaz0
            if (FileInfo.Compression != null && FileInfo.Compression is Yaz0)
            {
                ((Yaz0)FileInfo.Compression).Alignment = saved.Item1;
            }
        }
示例#2
0
        public void Load(System.IO.Stream stream)
        {
            files.Clear();

            FileInfo.KeepOpen = true;
            SarcData          = SARC_Parser.UnpackRamN(stream);
            foreach (var file in SarcData.Files)
            {
                var fileEntry = new FileEntry();
                fileEntry.FileName = file.Key;
                if (SarcData.HashOnly)
                {
                    fileEntry.FileName = SARC_Parser.TryGetNameFromHashTable(file.Key);
                    fileEntry.HashName = file.Key;
                }
                fileEntry.SetData(file.Value);
                files.Add(fileEntry);

                if (fileEntry.FileName.EndsWith(".bfres"))
                {
                    fileEntry.OpenFileFormatOnLoad = true;
                }
            }
        }