diff --git a/src/app/core/common.h b/src/app/core/common.h index 9da3180f..1a56a065 100644 --- a/src/app/core/common.h +++ b/src/app/core/common.h @@ -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; diff --git a/src/app/editor/master_editor.cc b/src/app/editor/master_editor.cc index f9b194cf..6b2c65b9 100644 --- a/src/app/editor/master_editor.cc +++ b/src/app/editor/master_editor.cc @@ -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_); } diff --git a/src/app/editor/overworld_editor.cc b/src/app/editor/overworld_editor.cc index d8db18d5..370c93f8 100644 --- a/src/app/editor/overworld_editor.cc +++ b/src/app/editor/overworld_editor.cc @@ -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(¤t_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++) diff --git a/src/app/editor/overworld_editor.h b/src/app/editor/overworld_editor.h index 80fb2c90..f775288c 100644 --- a/src/app/editor/overworld_editor.h +++ b/src/app/editor/overworld_editor.h @@ -87,6 +87,7 @@ class OverworldEditor : public Editor, } absl::Status LoadGraphics(); + absl::Status SaveOverworldMaps(); private: absl::Status UpdateOverworldEdit();