public byte[] Save()
        {
            Console.WriteLine("Saving sarc");

            sarcData.Files.Clear();
            foreach (TreeNode node in Collect(Nodes))
            {
                if (node is SarcEntry)
                {
                    Console.WriteLine("Saving " + node);
                    SaveFileEntryData((SarcEntry)node);
                }
                else if (node is IFileFormat && node != this)
                {
                    IFileFormat fileFormat = (IFileFormat)node;
                    if (fileFormat != null && ((IFileFormat)node).CanSave)
                    {
                        sarcData.Files.Add(SetSarcPath(node, this),
                                           STLibraryCompression.CompressFile(fileFormat.Save(), fileFormat));
                    }
                    else
                    {
                        sarcData.Files.Add(SetSarcPath(node, this),
                                           STLibraryCompression.CompressFile(OpenedFiles[node.FullPath], fileFormat));
                    }
                }
            }

            Tuple <int, byte[]> sarc = SARCExt.SARC.PackN(sarcData);

            IFileInfo.Alignment = sarc.Item1;
            return(sarc.Item2);
        }
Beispiel #2
0
        public void SaveFileFormat()
        {
            if (FileFormat != null && FileFormat.CanSave)
            {
                if (FileDataStream != null)
                {
                    Console.WriteLine($"Updating FileDataStream " + (FileDataStream is FileStream));
                    if (FileDataStream is FileStream)
                    {
                        FileDataStream.Close();
                    }

                    var mem = new System.IO.MemoryStream();
                    FileFormat.Save(mem);
                    FileDataStream = mem;
                    //Reload file data
                    FileFormat.Load(FileDataStream);
                }
                else
                {
                    var mem = new System.IO.MemoryStream();
                    FileFormat.Save(mem);
                    FileData = STLibraryCompression.CompressFile(mem.ToArray(), FileFormat);
                }
            }
        }
 public void SaveFileFormat()
 {
     if (FileFormat != null && FileFormat.CanSave)
     {
         if (FileDataStream != null)
         {
             var mem = new System.IO.MemoryStream();
             FileFormat.Save(mem);
             FileDataStream = mem;
             //Reload file data
             FileFormat.Load(FileDataStream);
         }
         else
         {
             var mem = new System.IO.MemoryStream();
             FileFormat.Save(mem);
             FileData = STLibraryCompression.CompressFile(mem.ToArray(), FileFormat);
         }
     }
 }
Beispiel #4
0
 public static void SaveFileFormat(ArchiveFileInfo archiveFile, IFileFormat fileFormat)
 {
     if (fileFormat != null && fileFormat.CanSave)
     {
         if (archiveFile.FileDataStream != null)
         {
             var mem = new System.IO.MemoryStream();
             fileFormat.Save(mem);
             archiveFile.FileDataStream = mem;
             //Reload file data
             fileFormat.Load(archiveFile.FileDataStream);
         }
         else
         {
             var mem = new System.IO.MemoryStream();
             fileFormat.Save(mem);
             archiveFile.FileData = STLibraryCompression.CompressFile(mem.ToArray(), fileFormat);
         }
     }
 }
Beispiel #5
0
        public byte[] Save()
        {
            Console.WriteLine("Saving sarc");

            sarcData.Files.Clear();
            foreach (TreeNode node in Collect(EditorRoot.Nodes))
            {
                if (node is SarcEntry)
                {
                    Console.WriteLine("Saving " + node);
                    SaveFileEntryData((SarcEntry)node);
                }
                if (node is TreeNodeFile && node != EditorRoot)
                {
                    TreeNodeFile treeNodeFile = (TreeNodeFile)node;
                    if (treeNodeFile.FileHandler != null && treeNodeFile.FileHandler.IFileInfo.ArchiveHash == SarcHash)
                    {
                        sarcData.Files.Add(SARC.SetSarcPath(node, (TreeNode)this.EditorRoot), STLibraryCompression.CompressFile(treeNodeFile.FileHandler.Save(), treeNodeFile.FileHandler));
                    }
                }
            }

            Tuple <int, byte[]> sarc = SARCExt.SARC.PackN(sarcData);

            IFileInfo.Alignment = sarc.Item1;
            return(sarc.Item2);
        }