Merge pull request #681 from GriffinRichards/in-game-reload-message

Add in-game reload message
This commit is contained in:
GriffinR
2025-02-25 00:02:15 -05:00
committed by GitHub
8 changed files with 74 additions and 42 deletions

View File

@@ -1299,12 +1299,6 @@ void MainWindow::onNewMapCreated(Map *newMap, const QString &groupName) {
this->editor->addNewEvent(Event::Type::HealLocation);
}
// TODO: Creating a new map shouldn't be automatically saved.
// For one, it takes away the option to discard the new map.
// For two, if the new map uses an existing layout, any unsaved changes to that layout will also be saved.
editor->project->saveMap(newMap);
editor->project->saveAllDataStructures();
// Add new map to the map lists
this->mapGroupModel->insertMapItem(newMap->name(), groupName);
this->mapLocationModel->insertMapItem(newMap->name(), newMap->header()->location());
@@ -1320,7 +1314,12 @@ void MainWindow::onNewMapCreated(Map *newMap, const QString &groupName) {
ui->comboBox_EmergeMap->insertItem(mapIndex, newMap->name());
}
userSetMap(newMap->name());
if (userSetMap(newMap->name())) {
// TODO: Creating a new map shouldn't be automatically saved.
// For one, it takes away the option to discard the new map.
// For two, if the new map uses an existing layout, any unsaved changes to that layout will also be saved.
save(true);
}
}
// Called any time a new layout is created (including as a byproduct of creating a new map)
@@ -1543,16 +1542,30 @@ void MainWindow::updateMapList() {
}
void MainWindow::on_action_Save_Project_triggered() {
editor->saveProject();
updateWindowTitle();
updateMapList();
saveGlobalConfigs();
save(false);
}
void MainWindow::on_action_Save_triggered() {
editor->save();
save(true);
}
void MainWindow::save(bool currentOnly) {
if (currentOnly) {
this->editor->saveCurrent();
} else {
this->editor->saveAll();
}
updateWindowTitle();
updateMapList();
if (!porymapConfig.shownInGameReloadMessage) {
// Show a one-time warning that the user may need to reload their map to see their new changes.
static const QString message = QStringLiteral("Reload your map in-game!\n\nIf your game is currently saved on a map you have edited, "
"the changes may not appear until you leave the map and return.");
InfoMessage::show(message, this);
porymapConfig.shownInGameReloadMessage = true;
}
saveGlobalConfigs();
}
@@ -2965,7 +2978,7 @@ bool MainWindow::closeProject() {
auto reply = msgBox.exec();
if (reply == QMessageBox::Yes) {
editor->saveProject();
save();
} else if (reply == QMessageBox::No) {
logWarn("Closing project with unsaved changes.");
} else if (reply == QMessageBox::Cancel) {