예제 #1
0
파일: Form1.cs 프로젝트: odasm/WzPatcher
        void loadDifferences()
        {
            // here we would query a website for latest patch rev.
            WzMapleVersion vrs     = WzMapleVersion.GMS; // is classic old GMS??
            string         imgPath = textBox1.Text;
            string         wzPath  = textBox2.Text;

            Console.WriteLine("imgPath: " + imgPath + ", wzPath: " + wzPath);
            WzFile affected = new WzFile(wzPath, vrs);

            affected.ParseWzFile();
            char[] split   = { '\\', '/' };
            string imgName = imgPath.Split(split)[imgPath.Split(split).Length - 1].Trim();

            Console.WriteLine("imgName: " + imgName);
            WzImage    toPatch = affected.WzDirectory.GetImageByName(imgName);
            FileStream stream  = File.OpenRead(imgPath);
            WzImage    img     = new WzImage("-" + imgName, stream, vrs);

            img.ParseImage();
            toPatch.ParseImage();
            toPatch.ClearProperties();
            toPatch.AddProperties(img.WzProperties);
            affected.WzDirectory.GetImageByName(imgName).changed = true;
            affected.SaveToDisk(wzPath + ".new");
            affected.Dispose();
            stream.Close();
            while (!tryDelete(wzPath))
            {
                Thread.Sleep(1000);             // ensure that we can rename the file
            }
            File.Move(wzPath + ".new", wzPath); // rewrite w/ patched file
            button1.Text = "Done!";
        }