Beispiel #1
0
            public static void FindAndExtractFile(bool ignoreComplete = false)
            {
                string path = Program.ProjectPath;

                string where = Functions.FileDialog._SaveDialog.DirectoryPath.ToString();
                string file = StaticWindows.ExportOneFile.GetFile();

                //WaitDialog.Width = 15;
                //WaitDialog.Height = 3;

                Functions.Misc.UpdateStatus("Extracting file: " + file);

                RPGMakerVersion _version = RGSSAD.GetVersion(path);

                switch (_version)
                {
                case RPGMakerVersion.Xp:
                case RPGMakerVersion.Vx:
                {
                    RGSSADv1 encrypted = new RGSSADv1(path);
                    try
                    {
                        ArchivedFile _result = encrypted.ArchivedFiles.FirstOrDefault(x => x.Name.Contains(file));

                        if ((_result.Name ?? "TheresNoFileHere") != "TheresNoFileHere")
                        {
                            encrypted.ExtractFile(_result, where, StaticWindows.Settings.OverwriteFiles);
                        }

                        if (!ignoreComplete)
                        {
                            Functions.Misc.UpdateStatus("Extracted file: " + file);
                            Application.Run(Operation.Complete);
                        }
                    }
                    catch (IOException fileErr)
                    {
                        Operation.ShowError(fileErr.Message + "\n\n" + fileErr.Source);
                    }
                    encrypted.Dispose();
                    break;
                }

                case RPGMakerVersion.VxAce:
                {
                    RGSSADv3 encrypted = new RGSSADv3(path);
                    try
                    {
                        ArchivedFile _result = encrypted.ArchivedFiles.FirstOrDefault(x => x.Name.Contains(file));

                        if ((_result.Name ?? "TheresNoFileHere") != "TheresNoFileHere")
                        {
                            encrypted.ExtractFile(_result, where, StaticWindows.Settings.OverwriteFiles);
                        }

                        if (!ignoreComplete)
                        {
                            Functions.Misc.UpdateStatus("Extracted file: " + file);
                            Application.Run(Operation.Complete);
                        }
                    }
                    catch (IOException fileErr)
                    {
                        Operation.ShowError(fileErr.Message + "\n\n" + fileErr.Source);
                    }
                    encrypted.Dispose();
                    break;
                }

                default: break;
                }
            }