Exemple #1
0
 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); }
 }
Exemple #2
0
        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); }
        }