private void linkCredits_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e) { var credBox = InputBoxForm.OKBOX("Credits"); credBox.TitleLabel.ForeColor = Color.White; credBox.richTextBox1.Height += 20; credBox.Height += 25; credBox.richTextBox1.Font = new Font("Microsoft Sans Serif", 12); credBox.panelBG.BorderStyle = BorderStyle.Fixed3D; credBox.richTextBox1.AppendText("BoltMan: Project Creator", Color.MediumSlateBlue, true); credBox.richTextBox1.AppendText("UncleClapton: Repo Manager/Contributor", Color.RoyalBlue, true); credBox.richTextBox1.AppendText("", Color.RoyalBlue, true); credBox.richTextBox1.AppendText("You can contribute @ https://github.com/UncleClapton/MHWModManager", Color.Orange, false); credBox.richTextBox1.CenterText(); credBox.ShowDialog(); }
public static async void LoadLoadout() { Task saveBakTask = SaveLoadoutAuto(Serializer.GetMMDataFolder() + "LastLoadoutStateBackup.mlf", false); OpenFileDialog fileDialog = new OpenFileDialog() { InitialDirectory = string.IsNullOrEmpty(modsData.lastSaveDialoguePath) ? Serializer.GetMMDataFolder() : modsData.lastSaveDialoguePath, AddExtension = true, Filter = selectDialogFilter, ValidateNames = true, Multiselect = false, CheckFileExists = true }; var result = fileDialog.ShowDialog(); if (result != DialogResult.OK) { return; } await saveBakTask; try { ModsData loadoutData = Serializer.LoadObj(fileDialog.FileName) as ModsData; List <string> issues = new List <string>(); foreach (var loadMod in loadoutData.modInfos) { //Console.WriteLine(""); //foreach(var file in loadMod.archiveFiles) { // Console.WriteLine($"{file.installed}: {file.path}"); //} //Console.WriteLine($"{mod.modName}: {mod.intalledText}"); if (!loadMod.archiveExists) { issues.Add($"Couldnt Find: {loadMod.shortPath}"); continue; } ModInfo matchingMod = modsData.modInfos.Find(realMod => realMod.modName == loadMod.modName); if (!matchingMod) { issues.Add($"Archive Not Loaded: {loadMod.modPath}"); continue; } RestoreModState(loadMod); foreach (var file in loadMod.archiveFiles) { //not sure if neccessary but just clear the temporary belonging nodes just in case file.belongingNode = null; //update the installed status of the real mod archive files to match the status of the loadout files ArchiveFile matchFile = matchingMod.archiveFiles.First(x => x.path == file.path); if (matchFile) { matchFile.installed = file.installed; matchFile.installedCRC = file.installedCRC; } } } IEnumerable <ModInfo> newlyAddedMods = modsData.modInfos.Where(mod => !loadoutData.modInfos.Find(loadmod => loadmod.modName == mod.modName)); if (newlyAddedMods.Count() > 0) { InputBoxForm watDoBox = InputBoxForm.OKBOX("New Files Were Added!", "", "Uninstall New Mods"); watDoBox.TitleLabel.ForeColor = Color.LightYellow; watDoBox.buttonClose.Visible = false; watDoBox.richTextBox1.AppendText("\nSince this loadout was created, new mod archives have been added.\nWhat would you like to do about this?"); watDoBox.richTextBox1.CenterText(); watDoBox.buttonCancel.Width += 50; watDoBox.buttonCancel.Left -= 50; watDoBox.buttonNoAll.Text = "Leave As Is"; watDoBox.buttonNoAll.Visible = true; watDoBox.buttonNoAll.Width += 45; watDoBox.buttonNoAll.Left = watDoBox.buttonCancel.Left - watDoBox.buttonNoAll.Width - 10; watDoBox.checkBoxGeneric1.Text = "Update Loadout With Changes"; watDoBox.checkBoxGeneric1.Visible = true; watDoBox.checkBoxGeneric1.Checked = true; watDoBox.checkBoxGeneric1.Top = watDoBox.buttonNoAll.Top + 5; watDoBox.checkBoxGeneric1.Left = 10; result = watDoBox.ShowDialog(); if (result == DialogResult.No) { //uninstall foreach (var mod in newlyAddedMods) { foreach (var file in mod.archiveFiles) { file.belongingNode = new TreeNode() { Checked = true } } ; ArchiveManager.UninstallSelected(mod, false, true); foreach (var file in mod.archiveFiles) { file.belongingNode = null; } } } else { //leave be } if (watDoBox.checkBoxGeneric1.Checked) { await SaveLoadoutAuto(fileDialog.FileName, false); } } ArchiveManager.DeleteEmptyDirs(Serializer.GetGameModFolder()); InputBoxForm infoBox; if (issues.Count > 0) { infoBox = InputBoxForm.OKBOX("Completed With Warnings", ""); infoBox.TitleLabel.ForeColor = Color.Orange; infoBox.richTextBox1.AppendText("The loadout was restored but there were some issues.\n\n"); infoBox.Height += 100; infoBox.richTextBox1.Height += 95; foreach (string issue in issues) { infoBox.richTextBox1.AppendText(issue, Color.LightYellow, true); } infoBox.checkBoxGeneric1.Text = "Update Loadout With These Removed"; infoBox.checkBoxGeneric1.Visible = true; infoBox.checkBoxGeneric1.Top = infoBox.buttonNoAll.Top + 5; infoBox.checkBoxGeneric1.Left = 10; } else { infoBox = InputBoxForm.OKBOX("Success", ""); infoBox.TitleLabel.ForeColor = Color.PaleGreen; infoBox.richTextBox1.AppendText("\nMod loadout state succesfully restored.", Color.LawnGreen, true); } infoBox.richTextBox1.CenterText(); infoBox.ShowDialog(); if (infoBox.checkBoxGeneric1.Checked) { await SaveLoadoutAuto(fileDialog.FileName, false); } MainForm.RefreshListView(); MainForm.RefreshTreeView(); } catch (Exception ex) { InputBoxForm successBox = InputBoxForm.OKBOX("Failure", ""); successBox.richTextBox1.AppendText("An error occured while trying to restore your mod loadout.", Color.Salmon, true); successBox.richTextBox1.AppendText("Heres the error:\n\n"); successBox.richTextBox1.CenterText(); successBox.richTextBox1.AppendText(ex.ToString()); } }