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); }); }); }); }
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); }); }); }