private void button_ystb_cipher_Click(object sender, EventArgs e) { try { var key = int.Parse(textBox_ystb_cipher_key.Text, NumberStyles.HexNumber); var files = new List <string>(); int counter = 0; if (Directory.Exists(textBox_ystb_cipher_input.Text)) { files.AddRange(Directory.GetFiles(textBox_ystb_cipher_input.Text, "*.ybn", SearchOption.TopDirectoryOnly)); } else { files.Add(textBox_ystb_cipher_input.Text); } foreach (var file in files) { using (var reader = new BinaryReader(File.OpenRead(file))) { var data = YSTB.Cipher(reader, key); if (data != null) { reader.Close(); Log("[YSTB Cipher] Processed: " + Path.GetFileName(file)); var path = Path.Combine(textBox_ystb_cipher_output.Text, Path.GetFileName(file)); Directory.CreateDirectory(Path.GetDirectoryName(path)); File.WriteAllBytes(path, data); counter++; } } } Log("[YSTB Cipher] Complete: " + counter + "/" + files.Count + " files."); } catch (Exception ex) { Oops(ex); } }
private void button_ystb_text_patch_Click(object sender, EventArgs e) { try { var files = new List <string>(); if (Directory.Exists(textBox_ystb_text_input.Text)) { files.AddRange(Directory.GetFiles(textBox_ystb_text_input.Text, "*.ybn", SearchOption.TopDirectoryOnly)); } else { files.Add(textBox_ystb_text_input.Text); } var yscm = new YSCM(new BinaryReader(File.OpenRead(textBox_ystb_text_yscm.Text))); var patch = JSON.ToObject <Dictionary <string, List <string> > >(File.ReadAllText(textBox_ystb_text_patch.Text)); int counter = 0; foreach (var file in files) { if (patch.TryGetValue(Path.GetFileNameWithoutExtension(file), out List <string> p)) { using (var fs = File.OpenRead(file)) using (var reader = new BinaryReader(new BufferedStream(fs, 102400))) { try { var ystb = new YSTB(reader, yscm); int tmp = ystb.Patch(p); using (var writer = new BinaryWriter(File.Open(Path.Combine(textBox_ystb_text_output.Text, Path.GetFileName(file)), FileMode.Create))) { ystb.Write(writer); } Log("[YSTB Patch] Patched: " + Path.GetFileName(file) + ", " + tmp + " replaces"); counter++; } catch (Exception ex) { Log(ex.ToString()); } } } } Log("[YSTB Patch] Patch complete: " + counter + "/" + files.Count + " files."); } catch (Exception ex) { Oops(ex); } }