private void Handle3() { Patcher.ProgressHandler.AddProgressLevel("Actualizando chat.svo", 1, () => { Patcher.Action("Updating chat.svo...", () => { Patcher.GameFileSystem.ReplaceFileWithStream("chat.svo", Patcher.TempFS.OpenFileRead("chat.es.svo"), (Current, Total) => { Patcher.ProgressHandler.SetLevelProgressTo(Current, Total); }); }); }); #if false //Patcher.TempFS.OpenFileRead("chat.es.svo").CopyTo(Patcher.GameFileSystem.OpenFileRW("chat.svo")); //Patcher.TempFS.WriteAllBytes("VC001US.DAT", TalesCompression.DecompressStream(ChatSvo["VC001US.DAT"].Open()).ReadAll()); Patcher.GameAccessPath("chat.svo", () => { var ChatId = "VC001"; //Patcher.GameGetFile(ChatId + "US.DAT", (File) => { }); Patcher.GameAccessPath(ChatId + "US.DAT", () => { Patcher.GameGetFile("3", (ChtxStream) => { var Chtx = new TO8CHTX(); Chtx.Load(ChtxStream); // Translate { foreach (var Entry in Patcher.EntriesByRoom["skits/" + ChatId]) { int TextId = int.Parse(Entry.text_id) - 1; if (TextId >= 0) { Chtx[TextId].Title = Entry.texts.es[0].TrimEnd(' ', '\t', '\n', '\r', '.'); Chtx[TextId].TextOriginal = ""; Chtx[TextId].TextTranslated = Entry.texts.es[1]; } } } //ChtxStream.SetLength(0); ChtxStream.Position = 0; Chtx.Save(ChtxStream); }); //Console.WriteLine("Done"); }); }); #endif }
protected void HandleEntry(Regex SelectAll, Func <String, String, String> ReplaceSuffixName, FPS4.Entry EnglishEntry) { //Console.WriteLine(Thread.CurrentThread.ManagedThreadId); using (EnglishEntry) { //Console.WriteLine("[1]"); var BaseName = SelectAll.Match(EnglishEntry.Name).Groups[1].Value; var SpanishName = ReplaceSuffixName(EnglishEntry.Name, "ES"); Console.WriteLine("{0} : {1}", SpanishName, Thread.CurrentThread.ManagedThreadId); var ACMEFiles = ACME1.FilesByIndex.Where(Item => Item.Name.Contains(BaseName)); if (ACMEFiles.Count() == 1) { //Console.WriteLine("[2]"); var EsTempFile = TestOutputFolder + @"\" + SpanishName; #if REUSE_PAK if (!File.Exists(EsTempFile)) #endif { using (var CompressedSkitPAKStream = File.Open(EsTempFile, FileMode.Create)) { //Console.WriteLine("[3]"); var ACMEFile = ACMEFiles.ElementAt(0); //Console.WriteLine(SpanishName); using (var SkitPAK = new FPS4(TalesCompression.DecompressStream(EnglishEntry.Open()))) using (var chtx = new TO8CHTX(SkitPAK[3].Open())) { //Console.WriteLine("[4]"); try { chtx.TranslateWithAcmeFile(ACMEFile); } catch (Exception Exception) { Console.Error.WriteLine(Exception); Console.ReadKey(); } //Console.WriteLine("[5]"); using (var NewChtxStream = new MemoryStream()) using (var SkitPAKStream = new MemoryStream()) { chtx.Save(NewChtxStream); SkitPAK[3].SetStream(NewChtxStream); //Console.WriteLine("[6]"); SkitPAK.Save(SkitPAKStream); TalesCompression.EncodeFile(SkitPAKStream, CompressedSkitPAKStream); } } } } var SpanishEntry = PAK.CreateEntry(SpanishName, File.Open(EsTempFile, FileMode.Open)); } else { Console.WriteLine("WARNING. Untranslated Skit: ACMEFiles.Count() : {0} : {1}", ACMEFiles.Count(), BaseName); var SpanishEntry = PAK.CreateEntry(SpanishName, EnglishEntry.Open()); } } }