/// <summary> /// Replace the file content with a new content, /// and write the modified bundle to the GGPK. /// </summary> /// <returns>Size of imported bytes</returns> public virtual void ReplaceContent(byte[] NewContent) { var BundleToSave = ggpkContainer.Index.GetSmallestBundle(); BundleFileRecord.Write(NewContent); if (BundleFileRecord.bundleRecord != BundleToSave) { BundleFileRecord.Move(BundleToSave); } var NewBundleData = BundleToSave.Save(ggpkContainer.Reader, ggpkContainer.RecordOfBundle[BundleToSave].DataBegin); var fr = ggpkContainer.RecordOfBundle[BundleToSave]; fr.ReplaceContent(NewBundleData); BundleToSave.Bundle.offset = fr.DataBegin; UpdateCache(BundleToSave); ggpkContainer.IndexRecord.ReplaceContent(ggpkContainer.Index.Save()); }
/// <summary> /// Replace the file content with a new content, /// and write the modified bundle to the GGPK. /// </summary> /// <returns>Size of imported bytes</returns> public virtual void ReplaceContent(byte[] NewContent) { var BundleToSave = BundleFileRecord.bundleRecord; BundleFileRecord.Write(NewContent); if (ggpkContainer.Reader == null) { BundleToSave.SaveWithRecompression(); ggpkContainer.Index.Save("_.index.bin"); UpdateCache(BundleToSave); } else { var NewBundleData = BundleToSave.SaveWithRecompression(ggpkContainer.Reader, ggpkContainer.RecordOfBundle(BundleToSave).DataBegin); var fr = ggpkContainer.RecordOfBundle(BundleToSave); fr.ReplaceContent(NewBundleData); BundleToSave.Bundle.offset = fr.DataBegin; UpdateCache(BundleToSave); ggpkContainer.IndexRecord.ReplaceContent(ggpkContainer.Index.Save()); } }