private void saveChangesButton_Click(object sender, EventArgs e) { var saveWindow = new SaveFileDialog(); saveWindow.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\\Saved Games\\CD Projekt Red\\Cyberpunk 2077\\"; saveWindow.Filter = "Cyberpunk 2077 Save File|*.dat"; if (saveWindow.ShowDialog() == DialogResult.OK) { if (File.Exists(saveWindow.FileName) && !File.Exists(Path.GetDirectoryName(saveWindow.FileName) + "\\" + Path.GetFileNameWithoutExtension(saveWindow.FileName) + ".old")) { File.Copy(saveWindow.FileName, Path.GetDirectoryName(saveWindow.FileName) + "\\" + Path.GetFileNameWithoutExtension(saveWindow.FileName) + ".old"); } var saveBytes = activeSaveFile.SaveToPCSaveFile(); File.WriteAllBytes(saveWindow.FileName, saveBytes); var parsers = new List <INodeParser>(); parsers.AddRange(new INodeParser[] { new CharacterCustomizationAppearancesParser(), new InventoryParser(), new ItemDataParser(), new FactsDBParser(), new FactsTableParser(), new GameSessionConfigParser(), new ItemDropStorageManagerParser(), new ItemDropStorageParser(), new StatsSystemParser(), new ScriptableSystemsContainerParser() }); activeSaveFile = new SaveFileHelper(parsers); activeSaveFile.LoadPCSaveFile(new MemoryStream(saveBytes)); statusLabel.Text = "File saved."; } }
private void saveChangesButton_Click(object sender, EventArgs e) { var saveWindow = new SaveFileDialog(); saveWindow.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\\Saved Games\\CD Projekt Red\\Cyberpunk 2077\\"; saveWindow.Filter = "Cyberpunk 2077 Save File|*.dat"; if (saveWindow.ShowDialog() == DialogResult.OK) { statusLabel.Text = "Saving changes..."; this.Refresh(); if (File.Exists(saveWindow.FileName) && !File.Exists(Path.GetDirectoryName(saveWindow.FileName) + "\\" + Path.GetFileNameWithoutExtension(saveWindow.FileName) + ".old")) { File.Copy(saveWindow.FileName, Path.GetDirectoryName(saveWindow.FileName) + "\\" + Path.GetFileNameWithoutExtension(saveWindow.FileName) + ".old"); } byte[] saveBytes; if (saveType == 0) { saveBytes = activeSaveFile.SaveToPCSaveFile(); } else { saveBytes = activeSaveFile.SaveToPS4SaveFile(); } var parsers = new List <INodeParser>(); parsers.AddRange(new INodeParser[] { new CharacterCustomizationAppearancesParser(), new InventoryParser(), new ItemDataParser(), new FactsDBParser(), new FactsTableParser(), new GameSessionConfigParser(), new ItemDropStorageManagerParser(), new ItemDropStorageParser(), new StatsSystemParser(), new ScriptableSystemsContainerParser() }); var testFile = new SaveFileHelper(parsers); try { if (saveType == 0) { testFile.LoadPCSaveFile(new MemoryStream(saveBytes)); } else { testFile.LoadPS4SaveFile(new MemoryStream(saveBytes)); } } catch (Exception ex) { statusLabel.Text = "Save cancelled."; File.WriteAllText("error.txt", ex.Message + '\n' + ex.TargetSite + '\n' + ex.StackTrace); MessageBox.Show("Corruption has been detected in the edited save file. No data has been written. Please report this issue on github.com/Deweh/CyberCAT-SimpleGUI with the generated error.txt file."); return; } File.WriteAllBytes(saveWindow.FileName, saveBytes); activeSaveFile = testFile; statusLabel.Text = "File saved."; } }