/// <summary> /// Fixes the dat counts in the index files /// </summary> private async Task FixIndexDatCounts() { foreach (var xivDataFile in _indexDatRepairList) { await _problemChecker.RepairIndexDatCounts(xivDataFile); } }
/// <summary> /// Fixes the dat counts in the index files /// </summary> private void FixIndexDatCounts() { foreach (var xivDataFile in _indexDatRepairList) { _problemChecker.RepairIndexDatCounts(xivDataFile); } }
private async Task CheckIndexFiles() { var xivDataFiles = new XivDataFile[] { XivDataFile._0A_Exd, XivDataFile._01_Bgcommon, XivDataFile._04_Chara, XivDataFile._06_Ui }; var problemChecker = new ProblemChecker(_gameDirectory); foreach (var xivDataFile in xivDataFiles) { var errorFound = await problemChecker.CheckIndexDatCounts(xivDataFile); if (errorFound) { await problemChecker.RepairIndexDatCounts(xivDataFile); } } }
private async Task <bool> CheckIndexFiles() { var xivDataFiles = new XivDataFile[] { XivDataFile._0A_Exd, XivDataFile._01_Bgcommon, XivDataFile._04_Chara, XivDataFile._06_Ui }; var problemChecker = new ProblemChecker(_gameDirectory); try { foreach (var xivDataFile in xivDataFiles) { var errorFound = await problemChecker.CheckIndexDatCounts(xivDataFile); if (errorFound) { await problemChecker.RepairIndexDatCounts(xivDataFile); } } } catch (Exception ex) { var result = FlexibleMessageBox.Show("A critical error occurred when attempting to read the FFXIV index files.\n\nWould you like to restore your index backups?\n\nError: " + ex.Message, "Critical Index Error", MessageBoxButtons.YesNo, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); if (result == DialogResult.Yes) { var indexBackupsDirectory = new DirectoryInfo(Settings.Default.Backup_Directory); var success = await problemChecker.RestoreBackups(indexBackupsDirectory); if (!success) { FlexibleMessageBox.Show("Unable to restore Index Backups, shutting down TexTools.", "Critical Error Shutdown", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); return(false); } } else { FlexibleMessageBox.Show("Shutting Down TexTools.", "Critical Error Shutdown", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); return(false); } } return(true); }
/// <summary> /// Event handler for the start over menu item clicked /// </summary> private async void Menu_StartOver_Click(object sender, RoutedEventArgs e) { var gameDirectory = new DirectoryInfo(Settings.Default.FFXIV_Directory); var index = new Index(gameDirectory); var outdated = false; if (index.IsIndexLocked(XivDataFile._0A_Exd)) { FlexibleMessageBox.Show(UIMessages.IndexLockedErrorMessage, UIMessages.IndexLockedErrorTitle, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var result = FlexibleMessageBox.Show(UIMessages.StartOverMessage, UIMessages.StartOverTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (result == System.Windows.Forms.DialogResult.Yes) { var indexBackupsDirectory = new DirectoryInfo(Settings.Default.Backup_Directory); if (!Directory.Exists(indexBackupsDirectory.FullName)) { FlexibleMessageBox.Show(UIMessages.BackupFolderAccessErrorMessage, UIMessages.IndexBackupsErrorTitle, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var filesToCheck = new XivDataFile[] { XivDataFile._01_Bgcommon, XivDataFile._04_Chara, XivDataFile._06_Ui }; var problemChecker = new ProblemChecker(gameDirectory); foreach (var xivDataFile in filesToCheck) { var backupFile = new DirectoryInfo($"{indexBackupsDirectory.FullName}\\{xivDataFile.GetDataFileName()}.win32.index"); if (!File.Exists(backupFile.FullName)) { continue; } var outdatedCheck = await problemChecker.CheckForOutdatedBackups(xivDataFile, indexBackupsDirectory); if (!outdatedCheck) { FlexibleMessageBox.Show(UIMessages.OutdatedBackupsErrorMessage, UIMessages.IndexBackupsErrorTitle, MessageBoxButtons.OK, MessageBoxIcon.Error); outdated = true; } } await Task.Run(async() => { var modding = new Modding(gameDirectory); await modding.DeleteAllFilesAddedByTexTools(); var dat = new Dat(gameDirectory); var modListDirectory = new DirectoryInfo(Path.Combine(gameDirectory.Parent.Parent.FullName, XivStrings.ModlistFilePath)); var backupFiles = Directory.GetFiles(indexBackupsDirectory.FullName); // Make sure backups exist if (backupFiles.Length == 0) { FlexibleMessageBox.Show(string.Format(UIMessages.NoBackupsFoundErrorMessage, indexBackupsDirectory.FullName), UIMessages.BackupFilesMissingTitle, MessageBoxButtons.OK, MessageBoxIcon.Warning); // Toggle off all mods await modding.ToggleAllMods(false); } else if (outdated) { // Toggle off all mods await modding.ToggleAllMods(false); } else { // Copy backups to ffxiv folder foreach (var backupFile in backupFiles) { if (backupFile.Contains(".win32.index")) { File.Copy(backupFile, $"{gameDirectory}/{Path.GetFileName(backupFile)}", true); } } } // Delete modded dat files foreach (var xivDataFile in (XivDataFile[])Enum.GetValues(typeof(XivDataFile))) { var datFiles = await dat.GetModdedDatList(xivDataFile); foreach (var datFile in datFiles) { File.Delete(datFile); } if (datFiles.Count > 0) { await problemChecker.RepairIndexDatCounts(xivDataFile); } } // Delete mod list File.Delete(modListDirectory.FullName); modding.CreateModlist(); }); UpdateViews(ItemTreeView.SelectedItem as Category); await this.ShowMessageAsync(UIMessages.StartOverCompleteTitle, UIMessages.StartOverCompleteMessage); } }