コード例 #1
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); }
        }
コード例 #2
0
        private void button_ystb_text_export_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)));

                int counter = 0;
                var result  = new Dictionary <string, List <string> >();
                foreach (var file in files)
                {
                    using (var fs = File.OpenRead(file))
                        using (var reader = new BinaryReader(new BufferedStream(fs, 102400)))
                        {
                            try
                            {
                                result.Add(Path.GetFileNameWithoutExtension(file), new YSTB(reader, yscm).ExportString());
                                Log("[YSTB Text] Loaded: " + Path.GetFileName(file));
                                counter++;
                            }
                            catch { }
                        }
                }
                Log("[YSTB Text] Export complete: " + counter + "/" + files.Count + " files.");

                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    File.WriteAllText(saveFileDialog1.FileName, JSON.ToNiceJSON(result, new JSONParameters()
                    {
                        UseEscapedUnicode = false
                    }));
                }
            }
            catch (Exception ex) { Oops(ex); }
        }