Ejemplo n.º 1
0
        public static void Export(PackageDefinition package, Stream outputStream)
        {
            if (package.Type != PackageDefinition.PackageType.Fpk && package.Type != PackageDefinition.PackageType.Fpkd)
            {
                Debug.LogError("Only exporting fpk and fpkd packages is currently supported.");
                return;
            }

            var archiveFile = new FpkFile();

            archiveFile.FpkType = FpkType.Fpk;
            if (package.Type == PackageDefinition.PackageType.Fpkd)
            {
                archiveFile.FpkType = FpkType.Fpkd;
            }

            // TODO references
            foreach (var entry in package.Entries)
            {
                if (entry is IFoxAsset)
                {
                    // TODO convert
                    continue;
                }

                var fpkEntry = new FpkEntry {
                    FilePath = AssetDatabase.GetAssetPath(entry)
                };
                archiveFile.Entries.Add(fpkEntry);
            }
        }
Ejemplo n.º 2
0
        }         //ReadArchive

        public static List <string> GetFpkReferences(string fpkPath)
        {
            var     fpkReferences = new List <string>();
            FpkFile fpkFile       = GzsLib.ReadArchive <FpkFile>(fpkPath);

            foreach (var reference in fpkFile.References)
            {
                fpkReferences.Add(reference.FilePath);
            }
            return(fpkReferences);
        }//GetFpkReferences
Ejemplo n.º 3
0
        }         //ReadArchive

        public static List <string> GetFpkReferences(string fpkPath)
        {
            var     fpkReferences = new List <string>();
            FpkFile fpkFile       = GzsLib.ReadArchive <FpkFile>(fpkPath);

            foreach (var reference in fpkFile.References)
            {
                fpkReferences.Add(reference.FilePath);
            }
            Debug.LogLine($"[GzsLib] GetFpkReferences: found {fpkReferences.Count} in {fpkPath}");
            return(fpkReferences);
        }//GetFpkReferences
Ejemplo n.º 4
0
        // Export FPK archive with specified parameters
        public static void WriteFpkArchive(string FileName, string SourceDirectory, List <string> Files)
        {
            FpkFile q = new FpkFile()
            {
                Name = FileName
            };

            foreach (string s in Files)
            {
                q.Entries.Add(new FpkEntry()
                {
                    FilePath = s
                });
            }

            using (FileStream outFile = new FileStream(FileName, FileMode.Create))
            {
                IDirectory fileDirectory = new FileSystemDirectory(SourceDirectory);
                q.Write(outFile, fileDirectory);
            }
        }
Ejemplo n.º 5
0
        // Export FPK archive with specified parameters
        public static void WriteFpkArchive(string FileName, string SourceDirectory, List <string> Files)
        {
            Debug.LogLine(String.Format("[GzsLib] Writing FPK archive: {0}", FileName));
            FpkFile q = new FpkFile()
            {
                Name = FileName
            };

            foreach (string s in Files)
            {
                q.Entries.Add(new FpkEntry()
                {
                    FilePath = Tools.ToQarPath(s)
                });
            }

            using (FileStream outFile = new FileStream(FileName, FileMode.Create))
            {
                IDirectory fileDirectory = new FileSystemDirectory(SourceDirectory);
                q.Write(outFile, fileDirectory);
            }
        }
Ejemplo n.º 6
0
        // Export FPK archive with specified parameters
        public static void WriteFpkArchive(string FileName, string SourceDirectory, List <string> Files, List <string> references)
        {
            Debug.LogLine(String.Format("[GzsLib] Writing FPK archive: {0}", FileName));
            //tex smakebite for a for a long time (till 2021) only created fpkds with the FpkType as Fpk
            //to no obvious issue with fox engine (and I wouldn't think FpkType would be used, maybe for some editor/data managment stuff, but wouldn't imagine it being used for runtime).
            string        fpkType        = FileName.EndsWith(".fpkd") ? "fpkd" : "fpk";
            List <string> fpkFilesSorted = SortFpksFiles(fpkType, Files);

            FpkFile q = new FpkFile()
            {
                Name = FileName, FpkType = (fpkType == "fpkd" ? FpkType.Fpkd : FpkType.Fpk)
            };

            foreach (string s in fpkFilesSorted)
            {
                q.Entries.Add(new FpkEntry()
                {
                    FilePath = Tools.ToQarPath(s)
                });
            }
            //tex likewise smakebite didn't write/preserve references, to no apparent issue for fox.
            foreach (string fpk in references)
            {
                FpkReference reference = new FpkReference()
                {
                    ReferenceFilePath = new FpkString()
                    {
                        Value = fpk
                    }
                };
                q.References.Add(reference);
            }

            using (FileStream outFile = new FileStream(FileName, FileMode.Create))
            {
                IDirectory fileDirectory = new FileSystemDirectory(SourceDirectory);
                q.Write(outFile, fileDirectory);
            }
        }