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.
This commit is contained in:
scawful
2025-05-13 21:00:53 -04:00
parent 0863b7c606
commit 8d34ebf534
3 changed files with 24 additions and 10 deletions

View File

@@ -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) {

View File

@@ -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

View File

@@ -57,6 +57,13 @@ static const std::map<zelda3_version, zelda3_version_pointers>
*/
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<uint8_t>& 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();