コード例 #1
0
ファイル: resplitMenu.cs プロジェクト: Shadowth117/sa_tools
        void UpdateProjectFile(SAModel.SAEditorCommon.UI.ProgressDialog progress)
        {
            bool needsUpdate = false;

            if (splitEntries.Count > 0 || splitMDLEntries.Count > 0)
            {
                Templates.ProjectTemplate      projFile       = ProjectFunctions.openProjectFileString(Path.GetFullPath(SAToolsHub.projXML));
                Templates.ProjectInfo          projInfo       = projFile.GameInfo;
                List <Templates.SplitEntry>    projEntries    = projFile.SplitEntries;
                List <Templates.SplitEntryMDL> projMdlEntries = projFile.SplitMDLEntries;


                foreach (Templates.SplitEntry entry in splitEntries)
                {
                    if (!projEntries.Exists(x => x.IniFile == entry.IniFile))
                    {
                        projEntries.Add(entry);
                        needsUpdate = true;
                    }
                }

                if (projMdlEntries.Count > 0)
                {
                    foreach (Templates.SplitEntryMDL entry in splitMDLEntries)
                    {
                        if (!projMdlEntries.Exists(x => x.ModelFile == entry.ModelFile))
                        {
                            projMdlEntries.Add(entry);
                            needsUpdate = true;
                        }
                    }
                }

                if (needsUpdate)
                {
                    XmlSerializer serializer = new XmlSerializer(typeof(Templates.ProjectTemplate));
                    XmlWriter     writer     = XmlWriter.Create(SAToolsHub.projXML, new XmlWriterSettings()
                    {
                        Indent = true
                    });
                    Templates.ProjectTemplate updProjFile = new Templates.ProjectTemplate();


                    updProjFile.GameInfo     = projInfo;
                    updProjFile.SplitEntries = projEntries;
                    if (splitMDLEntries.Count > 0)
                    {
                        updProjFile.SplitMDLEntries = projMdlEntries;
                    }

                    serializer.Serialize(writer, updProjFile);
                    writer.Close();
                }
            }
        }
コード例 #2
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            Stream projFileStream;

            Templates.ProjectTemplate projectFile = new Templates.ProjectTemplate();

            SaveFileDialog saveFileDialog1 = new SaveFileDialog();

            saveFileDialog1.Filter           = "Project File (*.sap)|*.sap";
            saveFileDialog1.RestoreDirectory = true;

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if ((projFileStream = saveFileDialog1.OpenFile()) != null)
                {
                    gamePath = GetSystemPath();

                    XmlSerializer serializer = new XmlSerializer(typeof(Templates.ProjectTemplate));
                    TextWriter    writer     = new StreamWriter(projFileStream);

                    Templates.ProjectInfo projInfo = new Templates.ProjectInfo();

                    switch (game)
                    {
                    case "sadx":
                        projInfo.GameName         = "SADXPC";
                        projInfo.CanBuild         = true;
                        projInfo.GameSystemFolder = gamePath;
                        projInfo.ModSystemFolder  = projPath;

                        List <Templates.SplitEntry> dxsplitEntries = new List <Templates.SplitEntry>()
                        {
                            new Templates.SplitEntry {
                                SourceFile = (sonic + ".exe"), IniFile = (sonic + "_data.ini"), CmnName = "Executable Data"
                            },
                            new Templates.SplitEntry {
                                SourceFile = (chrmodels + "_orig.dll"), IniFile = (chrmodels + "_orig_data.ini"), CmnName = "Chrmodels Data"
                            },
                            new Templates.SplitEntry {
                                SourceFile = (adv00models + ".dll"), IniFile = (adv00models + "_data.ini"), CmnName = "Station Square Data"
                            },
                            new Templates.SplitEntry {
                                SourceFile = (adv01models + ".dll"), IniFile = (adv01models + "_data.ini"), CmnName = "Egg Carrier (Exterior) Data"
                            },
                            new Templates.SplitEntry {
                                SourceFile = (adv01cmodels + ".dll"), IniFile = (adv01cmodels + "_data.ini"), CmnName = "Egg Carrier (Interior) Data"
                            },
                            new Templates.SplitEntry {
                                SourceFile = (adv02models + ".dll"), IniFile = (adv02models + "_data.ini"), CmnName = "Mystic Ruins Data"
                            },
                            new Templates.SplitEntry {
                                SourceFile = (adv03models + ".dll"), IniFile = (adv03models + "_data.ini"), CmnName = "The Past Data"
                            },
                            new Templates.SplitEntry {
                                SourceFile = (bosschaos0models + ".dll"), IniFile = (bosschaos0models + "_data.ini"), CmnName = "Boss Chaos 0 Data"
                            },
                            new Templates.SplitEntry {
                                SourceFile = (chaostggarden02mr_daytime + ".dll"), IniFile = (chaostggarden02mr_daytime + "_data.ini"), CmnName = "MR Garden (Daytime) Data"
                            },
                            new Templates.SplitEntry {
                                SourceFile = (chaostggarden02mr_evening + ".dll"), IniFile = (chaostggarden02mr_evening + "_data.ini"), CmnName = "MR Garden (Evening) Data"
                            },
                            new Templates.SplitEntry {
                                SourceFile = (chaostggarden02mr_night + ".dll"), IniFile = (chaostggarden02mr_night + "_data.ini"), CmnName = "MR Garden (Night) Data"
                            },
                        };

                        projectFile.GameInfo     = projInfo;
                        projectFile.SplitEntries = dxsplitEntries;

                        break;

                    case "sa2":
                        projInfo.GameName         = "SA2PC";
                        projInfo.CanBuild         = true;
                        projInfo.GameSystemFolder = gamePath;
                        projInfo.ModSystemFolder  = projPath;

                        List <Templates.SplitEntry> sa2splitEntries = new List <Templates.SplitEntry>()
                        {
                            new Templates.SplitEntry {
                                SourceFile = (sonic2app + ".exe"), IniFile = (sonic2app + "_data.ini"), CmnName = "Executable Data"
                            },
                            new Templates.SplitEntry {
                                SourceFile = (data_dll + "_orig.dll"), IniFile = (data_dll + "_orig_data.ini"), CmnName = "Data DLL Data"
                            },
                        };

                        projectFile.GameInfo        = projInfo;
                        projectFile.SplitEntries    = sa2splitEntries;
                        projectFile.SplitMDLEntries = splitMdlEntries;

                        break;
                    }

                    serializer.Serialize(writer, projectFile);
                    projFileStream.Close();
                }
            }

            DialogResult xmlCreated = MessageBox.Show(("Project XML Successfully Created!"), "Project XML Created", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

            if (xmlCreated == DialogResult.OK)
            {
                this.Close();
            }
        }
コード例 #3
0
        private void btnCreate_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();

            saveFileDialog1.Filter           = "Project File (*.sap)|*.sap";
            saveFileDialog1.RestoreDirectory = true;

            if (checkBox1.Checked && (txtProjFolder.Text != null))
            {
                saveFileDialog1.InitialDirectory = txtProjFolder.Text;
            }

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if ((projFileStream = saveFileDialog1.OpenFile()) != null)
                {
                    XmlSerializer serializer = new XmlSerializer(typeof(Templates.ProjectTemplate));
                    TextWriter    writer     = new StreamWriter(projFileStream);
                    if (checkBox1.Checked && (txtProjFolder.Text != null))
                    {
                        projFolder = txtProjFolder.Text;
                    }
                    else
                    {
                        projFolder = Path.Combine((Path.GetDirectoryName(saveFileDialog1.FileName)), Path.GetFileNameWithoutExtension(saveFileDialog1.FileName));
                        if (!Directory.Exists(projFolder))
                        {
                            Directory.CreateDirectory(projFolder);
                        }
                    }

                    projName    = saveFileDialog1.FileName;
                    projectFile = new Templates.ProjectTemplate();
                    Templates.ProjectInfo projInfo = new Templates.ProjectInfo();

                    projInfo.GameName = gameName;
                    if (gameName == "SADXPC" || gameName == "SA2PC")
                    {
                        projInfo.CanBuild = true;
                    }
                    else
                    {
                        projInfo.CanBuild = false;
                    }
                    projInfo.GameSystemFolder = gamePath;
                    projInfo.ModSystemFolder  = projFolder;

                    projectFile.GameInfo     = projInfo;
                    projectFile.SplitEntries = splitEntries;
                    if (gameName == "SA2" || gameName == "SA2GC" || gameName == "SA2PC")
                    {
                        projectFile.SplitMDLEntries = splitMdlEntries;
                    }

                    serializer.Serialize(writer, projectFile);
                    projFileStream.Close();

#if !DEBUG
                    backgroundWorker1.RunWorkerAsync();
#endif
#if DEBUG
                    backgroundWorker1_DoWork(null, null);
                    BackgroundWorker1_RunWorkerCompleted(null, null);
#endif
                }
            }
        }
コード例 #4
0
        private void btnCreate_Click(object sender, EventArgs e)
        {
            if (backgroundWorker1.IsBusy)
            {
                return;
            }
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();

            saveFileDialog1.Filter           = "Project File (*.sap)|*.sap";
            saveFileDialog1.RestoreDirectory = true;

            if (checkBoxSaveDifferentFolder.Checked && textBoxProjFolder.Text != "")
            {
                saveFileDialog1.InitialDirectory = textBoxProjFolder.Text;
            }

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if ((projFileStream = saveFileDialog1.OpenFile()) != null)
                {
                    XmlSerializer serializer = new(typeof(Templates.ProjectTemplate));
                    XmlWriter     xmlWriter  = XmlWriter.Create(projFileStream, new XmlWriterSettings()
                    {
                        Indent = true
                    });
                    if (checkBoxSaveDifferentFolder.Checked && (textBoxProjFolder.Text != null))
                    {
                        projFolder = textBoxProjFolder.Text;
                    }
                    else
                    {
                        projFolder = Path.Combine((Path.GetDirectoryName(saveFileDialog1.FileName)), Path.GetFileNameWithoutExtension(saveFileDialog1.FileName));
                        if (!Directory.Exists(projFolder))
                        {
                            Directory.CreateDirectory(projFolder);
                        }
                    }

                    projName    = saveFileDialog1.FileName;
                    projectFile = new Templates.ProjectTemplate();
                    Templates.ProjectInfo projInfo = new Templates.ProjectInfo();

                    projInfo.GameName       = gameName;
                    projInfo.CheckFile      = checkFile;
                    projInfo.GameDataFolder = gameDataFolder;
                    projInfo.ProjectFolder  = (checkBoxSaveDifferentFolder.Checked && textBoxProjFolder.Text != "") ? projFolder : Path.GetFileNameWithoutExtension(saveFileDialog1.FileName);
                    projInfo.CanBuild       = (gameName == "SADXPC" || gameName == "SA2PC");

                    projectFile.GameInfo     = projInfo;
                    projectFile.SplitEntries = splitEntries;
                    if (splitMdlEntries != null)
                    {
                        projectFile.SplitMDLEntries = splitMdlEntries;
                    }

                    serializer.Serialize(xmlWriter, projectFile);
                    projFileStream.Close();

#if !DEBUG
                    backgroundWorker1.RunWorkerAsync();
#endif
#if DEBUG
                    backgroundWorker1_DoWork(null, null);
                    BackgroundWorker1_RunWorkerCompleted(null, null);
#endif
                }
            }
        }