Add SaveOverworldMaps public fn and experiment flag

This commit is contained in:
scawful
2024-01-25 13:45:47 -05:00
parent b8d9a3c5cb
commit 1ef1c3ff84
4 changed files with 16 additions and 14 deletions

View File

@@ -58,6 +58,9 @@ class ExperimentFlags {
// Log to the console.
bool kLogToConsole = false;
// Save overworld map edits to the ROM.
bool kSaveOverworldMaps = false;
};
ExperimentFlags() = default;

View File

@@ -341,6 +341,7 @@ void MasterEditor::DrawFileMenu() {
Checkbox("Draw Dungeon Room Graphics",
&mutable_flags()->kDrawDungeonRoomGraphics);
Checkbox("Save Dungeon Maps", &mutable_flags()->kSaveDungeonMaps);
Checkbox("Save Overworld Maps", &mutable_flags()->kSaveOverworldMaps);
ImGui::EndMenu();
}
@@ -518,6 +519,11 @@ void MasterEditor::SaveRom() {
status_ = screen_editor_.SaveDungeonMaps();
PRINT_IF_ERROR(status_);
}
if (flags()->kSaveOverworldMaps) {
status_ = overworld_editor_.SaveOverworldMaps();
PRINT_IF_ERROR(status_);
}
status_ = rom()->SaveToFile(backup_rom_);
}

View File

@@ -375,7 +375,7 @@ void OverworldEditor::DrawOverworldMapSettings() {
kInputFieldSize);
TableNextColumn();
gui::InputHexByte(
gui::InputHexWord(
"Msg Id",
overworld_.mutable_overworld_map(current_map_)->mutable_message_id(),
kInputFieldSize);
@@ -667,19 +667,6 @@ void OverworldEditor::RenderUpdatedMapBitmap(const ImVec2 &click_position,
rom()->UpdateBitmap(&current_bitmap);
}
void OverworldEditor::SaveOverworldChanges() {
// Store the changes made by the user to the ROM (or project file)
rom()->QueueChanges([&]() {
PRINT_IF_ERROR(overworld_.SaveOverworldMaps());
if (!overworld_.CreateTile32Tilemap()) {
// overworld_.SaveMap16Tiles();
PRINT_IF_ERROR(overworld_.SaveMap32Tiles());
} else {
std::cout << "Failed to create tile32 tilemap" << std::endl;
}
});
}
void OverworldEditor::CheckForOverworldEdits() {
if (!blockset_canvas_.points().empty()) {
// User has selected a tile they want to draw from the blockset.
@@ -925,6 +912,11 @@ absl::Status OverworldEditor::LoadGraphics() {
return absl::OkStatus();
}
absl::Status OverworldEditor::SaveOverworldMaps() {
RETURN_IF_ERROR(overworld_.SaveOverworldMaps());
return absl::OkStatus();
}
absl::Status OverworldEditor::LoadSpriteGraphics() {
// Render the sprites for each Overworld map
for (int i = 0; i < 3; i++)

View File

@@ -87,6 +87,7 @@ class OverworldEditor : public Editor,
}
absl::Status LoadGraphics();
absl::Status SaveOverworldMaps();
private:
absl::Status UpdateOverworldEdit();