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. // Log to the console.
bool kLogToConsole = false; bool kLogToConsole = false;
// Save overworld map edits to the ROM.
bool kSaveOverworldMaps = false;
}; };
ExperimentFlags() = default; ExperimentFlags() = default;

View File

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

View File

@@ -375,7 +375,7 @@ void OverworldEditor::DrawOverworldMapSettings() {
kInputFieldSize); kInputFieldSize);
TableNextColumn(); TableNextColumn();
gui::InputHexByte( gui::InputHexWord(
"Msg Id", "Msg Id",
overworld_.mutable_overworld_map(current_map_)->mutable_message_id(), overworld_.mutable_overworld_map(current_map_)->mutable_message_id(),
kInputFieldSize); kInputFieldSize);
@@ -667,19 +667,6 @@ void OverworldEditor::RenderUpdatedMapBitmap(const ImVec2 &click_position,
rom()->UpdateBitmap(&current_bitmap); 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() { void OverworldEditor::CheckForOverworldEdits() {
if (!blockset_canvas_.points().empty()) { if (!blockset_canvas_.points().empty()) {
// User has selected a tile they want to draw from the blockset. // User has selected a tile they want to draw from the blockset.
@@ -925,6 +912,11 @@ absl::Status OverworldEditor::LoadGraphics() {
return absl::OkStatus(); return absl::OkStatus();
} }
absl::Status OverworldEditor::SaveOverworldMaps() {
RETURN_IF_ERROR(overworld_.SaveOverworldMaps());
return absl::OkStatus();
}
absl::Status OverworldEditor::LoadSpriteGraphics() { absl::Status OverworldEditor::LoadSpriteGraphics() {
// Render the sprites for each Overworld map // Render the sprites for each Overworld map
for (int i = 0; i < 3; i++) for (int i = 0; i < 3; i++)

View File

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