From 8d34ebf5341a2871869761ca3c0df71b2e1fa895 Mon Sep 17 00:00:00 2001 From: scawful Date: Tue, 13 May 2025 21:00:53 -0400 Subject: [PATCH] Refactor ROM save functionality to use structured settings - Introduced a new SaveSettings struct to encapsulate parameters for the SaveToFile method, improving clarity and maintainability. - Updated SaveToFile method signature to accept SaveSettings instead of individual parameters. - Adjusted SaveRom method in EditorManager to utilize the new SaveSettings struct for better parameter management. - Removed redundant label loading from LoadFromFile when z3_load is true, streamlining the loading process. --- src/app/editor/editor_manager.cc | 5 ++++- src/app/rom.cc | 19 ++++++++++++------- src/app/rom.h | 10 ++++++++-- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/app/editor/editor_manager.cc b/src/app/editor/editor_manager.cc index 1606f085..eb35d09b 100644 --- a/src/app/editor/editor_manager.cc +++ b/src/app/editor/editor_manager.cc @@ -576,7 +576,10 @@ absl::Status EditorManager::SaveRom() { RETURN_IF_ERROR( SaveAllGraphicsData(*current_rom_, gfx::Arena::Get().gfx_sheets())); - return current_rom_->SaveToFile(backup_rom_, save_new_auto_); + Rom::SaveSettings settings; + settings.backup = backup_rom_; + settings.save_new = save_new_auto_; + return current_rom_->SaveToFile(settings); } absl::Status EditorManager::OpenRomOrProject(const std::string &filename) { diff --git a/src/app/rom.cc b/src/app/rom.cc index 0f4ca398..e98a7966 100644 --- a/src/app/rom.cc +++ b/src/app/rom.cc @@ -261,10 +261,9 @@ absl::Status Rom::LoadFromFile(const std::string &filename, bool z3_load) { if (z3_load) { RETURN_IF_ERROR(LoadZelda3()); + resource_label_manager_.LoadLabels(absl::StrFormat("%s.labels", filename)); } - // Set up the resource labels - resource_label_manager_.LoadLabels(absl::StrFormat("%s.labels", filename)); return absl::OkStatus(); } @@ -383,12 +382,16 @@ absl::Status Rom::SaveGfxGroups() { return absl::OkStatus(); } -absl::Status Rom::SaveToFile(bool backup, bool save_new, std::string filename) { +absl::Status Rom::SaveToFile(const SaveSettings &settings) { absl::Status non_firing_status; if (rom_data_.empty()) { return absl::InternalError("ROM data is empty."); } + std::string filename = settings.filename; + auto backup = settings.backup; + auto save_new = settings.save_new; + // Check if filename is empty if (filename == "") { filename = filename_; @@ -421,10 +424,12 @@ absl::Status Rom::SaveToFile(bool backup, bool save_new, std::string filename) { } // Run the other save functions - if (core::FeatureFlags::get().kSaveAllPalettes) - RETURN_IF_ERROR(SaveAllPalettes()); - if (core::FeatureFlags::get().kSaveGfxGroups) - RETURN_IF_ERROR(SaveGfxGroups()); + if (settings.z3_save) { + if (core::FeatureFlags::get().kSaveAllPalettes) + RETURN_IF_ERROR(SaveAllPalettes()); + if (core::FeatureFlags::get().kSaveGfxGroups) + RETURN_IF_ERROR(SaveGfxGroups()); + } if (save_new) { // Create a file of the same name and append the date between the filename diff --git a/src/app/rom.h b/src/app/rom.h index 3f00d209..ac7adec2 100644 --- a/src/app/rom.h +++ b/src/app/rom.h @@ -57,6 +57,13 @@ static const std::map */ class Rom { public: + struct SaveSettings { + bool backup = false; + bool save_new = false; + bool z3_save = true; + std::string filename = ""; + }; + absl::Status LoadFromFile(const std::string& filename, bool z3_load = true); absl::Status LoadFromData(const std::vector& data, bool z3_load = true); @@ -64,8 +71,7 @@ class Rom { absl::Status LoadGfxGroups(); absl::Status SaveGfxGroups(); - absl::Status SaveToFile(bool backup, bool save_new = false, - std::string filename = ""); + absl::Status SaveToFile(const SaveSettings& settings); absl::Status SavePalette(int index, const std::string& group_name, gfx::SnesPalette& palette); absl::Status SaveAllPalettes();