Beispiel #1
0
        /// <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());
        }
Beispiel #2
0
        /// <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());
            }
        }