Example #1
0
        public void RepackBtlPack()
        {
            //var OldFps4 = new FPS4(OldStream.Slice());
            //var NewFps4 = new FPS4(OldStream.Slice()); // Intended OldStream

            Patcher.Action("Packing BTL_PACK_ES.DAT", () =>
            {
                Patcher.TempFS.OpenFileReadScope("BTL_PACK_UK.DAT", (OldStream) =>
                {
                    Patcher.TempFS.OpenFileCreateScope("BTL_PACK_ES.DAT", (NewStream) =>
                    {
                        var OldFps4 = new FPS4(OldStream.Slice());
                        var NewFps4 = new FPS4(OldStream.Slice());                         // Intended OldStream

                        NewFps4.ClearAllEntries();

                        for (int n = 0; n <= 19; n++)
                        {
                            NewFps4.CreateEntry(String.Format("{0}", n), Patcher.TempFS.OpenFileRead(String.Format("BTL_PACK/{0}", n)));
                        }

                        NewFps4.SaveTo(NewStream, DoAlign: false);
                    });
                });
            });
        }
Example #2
0
 public void GameReplaceFile(string File1, Stream NewStream)
 {
     this.Action(String.Format("Update {0}", File1), () =>
     {
         this.GameGetFile(File1, (OldStream) =>
         {
             OldStream.WriteStream(NewStream.Slice());
             //Console.WriteLine("ZeroBytes: {0}", OldStream.Length - OldStream.Position);
             OldStream.WriteByteRepeatedTo((byte)0x00, OldStream.Length);
             OldStream.Flush();
         });
     });
 }
        public void ReplaceFileWithStream(String Path, Stream NewStream, Action <long, long> Progress = null)
        {
            if (Progress == null)
            {
                Progress = (_Current, _Total) => { }
            }
            ;

            this.OpenFileRWScope(Path, (OldStream) =>
            {
                OldStream.WriteStream(NewStream, (Current, Total) =>
                {
                    Progress(Current, OldStream.Length);
                });
                long Waypoint = OldStream.Position;
                OldStream.WriteByteRepeatedTo(0x00, OldStream.Length, (Current, Total) =>
                {
                    Progress(Waypoint + Current, OldStream.Length);
                });
            });
        }