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:
@@ -576,7 +576,10 @@ absl::Status EditorManager::SaveRom() {
|
|||||||
RETURN_IF_ERROR(
|
RETURN_IF_ERROR(
|
||||||
SaveAllGraphicsData(*current_rom_, gfx::Arena::Get().gfx_sheets()));
|
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) {
|
absl::Status EditorManager::OpenRomOrProject(const std::string &filename) {
|
||||||
|
|||||||
@@ -261,10 +261,9 @@ absl::Status Rom::LoadFromFile(const std::string &filename, bool z3_load) {
|
|||||||
|
|
||||||
if (z3_load) {
|
if (z3_load) {
|
||||||
RETURN_IF_ERROR(LoadZelda3());
|
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();
|
return absl::OkStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -383,12 +382,16 @@ absl::Status Rom::SaveGfxGroups() {
|
|||||||
return absl::OkStatus();
|
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;
|
absl::Status non_firing_status;
|
||||||
if (rom_data_.empty()) {
|
if (rom_data_.empty()) {
|
||||||
return absl::InternalError("ROM data is 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
|
// Check if filename is empty
|
||||||
if (filename == "") {
|
if (filename == "") {
|
||||||
filename = filename_;
|
filename = filename_;
|
||||||
@@ -421,10 +424,12 @@ absl::Status Rom::SaveToFile(bool backup, bool save_new, std::string filename) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Run the other save functions
|
// Run the other save functions
|
||||||
|
if (settings.z3_save) {
|
||||||
if (core::FeatureFlags::get().kSaveAllPalettes)
|
if (core::FeatureFlags::get().kSaveAllPalettes)
|
||||||
RETURN_IF_ERROR(SaveAllPalettes());
|
RETURN_IF_ERROR(SaveAllPalettes());
|
||||||
if (core::FeatureFlags::get().kSaveGfxGroups)
|
if (core::FeatureFlags::get().kSaveGfxGroups)
|
||||||
RETURN_IF_ERROR(SaveGfxGroups());
|
RETURN_IF_ERROR(SaveGfxGroups());
|
||||||
|
}
|
||||||
|
|
||||||
if (save_new) {
|
if (save_new) {
|
||||||
// Create a file of the same name and append the date between the filename
|
// Create a file of the same name and append the date between the filename
|
||||||
|
|||||||
@@ -57,6 +57,13 @@ static const std::map<zelda3_version, zelda3_version_pointers>
|
|||||||
*/
|
*/
|
||||||
class Rom {
|
class Rom {
|
||||||
public:
|
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 LoadFromFile(const std::string& filename, bool z3_load = true);
|
||||||
absl::Status LoadFromData(const std::vector<uint8_t>& data,
|
absl::Status LoadFromData(const std::vector<uint8_t>& data,
|
||||||
bool z3_load = true);
|
bool z3_load = true);
|
||||||
@@ -64,8 +71,7 @@ class Rom {
|
|||||||
absl::Status LoadGfxGroups();
|
absl::Status LoadGfxGroups();
|
||||||
|
|
||||||
absl::Status SaveGfxGroups();
|
absl::Status SaveGfxGroups();
|
||||||
absl::Status SaveToFile(bool backup, bool save_new = false,
|
absl::Status SaveToFile(const SaveSettings& settings);
|
||||||
std::string filename = "");
|
|
||||||
absl::Status SavePalette(int index, const std::string& group_name,
|
absl::Status SavePalette(int index, const std::string& group_name,
|
||||||
gfx::SnesPalette& palette);
|
gfx::SnesPalette& palette);
|
||||||
absl::Status SaveAllPalettes();
|
absl::Status SaveAllPalettes();
|
||||||
|
|||||||
Reference in New Issue
Block a user