Add SaveOverworldMaps public fn and experiment flag
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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(¤t_bitmap);
|
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() {
|
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++)
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user