diff --git a/include/core/regionmap.h b/include/core/regionmap.h index e33dbb75..6ee651fa 100644 --- a/include/core/regionmap.h +++ b/include/core/regionmap.h @@ -120,6 +120,9 @@ private: QString region_map_layout_bin_path; QString city_map_tiles_path; + bool region_map_png_needs_saving = false; + bool city_map_png_needs_saving = false; + int img_index_(int x, int y); int layout_index_(int x, int y); }; diff --git a/src/core/regionmap.cpp b/src/core/regionmap.cpp index 72e7c92a..a87ab726 100644 --- a/src/core/regionmap.cpp +++ b/src/core/regionmap.cpp @@ -40,22 +40,28 @@ void RegionMap::save() { } void RegionMap::saveTileImages() { - QFile backgroundTileFile(pngPath()); - if (backgroundTileFile.open(QIODevice::ReadOnly)) { - QByteArray imageData = backgroundTileFile.readAll(); - QImage pngImage = QImage::fromData(imageData); - this->region_map_png_path = project->root + "/graphics/pokenav/region_map.png"; - pngImage.save(pngPath()); + if (region_map_png_needs_saving) { + QFile backgroundTileFile(pngPath()); + if (backgroundTileFile.open(QIODevice::ReadOnly)) { + QByteArray imageData = backgroundTileFile.readAll(); + QImage pngImage = QImage::fromData(imageData); + this->region_map_png_path = project->root + "/graphics/pokenav/region_map.png"; + pngImage.save(pngPath()); - PaletteUtil parser; - parser.writeJASC(project->root + "/graphics/pokenav/region_map.pal", pngImage.colorTable(), 0x70, 0x20); + PaletteUtil parser; + parser.writeJASC(project->root + "/graphics/pokenav/region_map.pal", pngImage.colorTable(), 0x70, 0x20); + } + region_map_png_needs_saving = false; } - QFile cityTileFile(cityTilesPath()); - if (cityTileFile.open(QIODevice::ReadOnly)) { - QByteArray imageData = cityTileFile.readAll(); - QImage cityTilesImage = QImage::fromData(imageData); - this->city_map_tiles_path = project->root + "/graphics/pokenav/zoom_tiles.png"; - cityTilesImage.save(cityTilesPath()); + if (city_map_png_needs_saving) { + QFile cityTileFile(cityTilesPath()); + if (cityTileFile.open(QIODevice::ReadOnly)) { + QByteArray imageData = cityTileFile.readAll(); + QImage cityTilesImage = QImage::fromData(imageData); + this->city_map_tiles_path = project->root + "/graphics/pokenav/zoom_tiles.png"; + cityTilesImage.save(cityTilesPath()); + } + city_map_png_needs_saving = false; } } @@ -346,6 +352,7 @@ QString RegionMap::pngPath() { void RegionMap::setTemporaryPngPath(QString path) { this->region_map_png_path = path; + this->region_map_png_needs_saving = true; } QString RegionMap::cityTilesPath() { @@ -354,6 +361,7 @@ QString RegionMap::cityTilesPath() { void RegionMap::setTemporaryCityTilesPath(QString path) { this->city_map_tiles_path = path; + this->city_map_png_needs_saving = true; } // From x, y of image. diff --git a/src/ui/regionmapeditor.cpp b/src/ui/regionmapeditor.cpp index 99b5e5a3..48ae439c 100644 --- a/src/ui/regionmapeditor.cpp +++ b/src/ui/regionmapeditor.cpp @@ -225,6 +225,11 @@ void RegionMapEditor::updateRegionMapEntryOptions(QString section) { this->ui->spinBox_RM_Entry_width->setEnabled(enabled); this->ui->spinBox_RM_Entry_height->setEnabled(enabled); + this->ui->spinBox_RM_Entry_x->blockSignals(true); + this->ui->spinBox_RM_Entry_y->blockSignals(true); + this->ui->spinBox_RM_Entry_width->blockSignals(true); + this->ui->spinBox_RM_Entry_height->blockSignals(true); + this->ui->comboBox_RM_Entry_MapSection->setCurrentText(section); this->activeEntry = section; this->region_map_entries_item->currentSection = section; @@ -233,6 +238,11 @@ void RegionMapEditor::updateRegionMapEntryOptions(QString section) { this->ui->spinBox_RM_Entry_y->setValue(entry.y); this->ui->spinBox_RM_Entry_width->setValue(entry.width); this->ui->spinBox_RM_Entry_height->setValue(entry.height); + + this->ui->spinBox_RM_Entry_x->blockSignals(false); + this->ui->spinBox_RM_Entry_y->blockSignals(false); + this->ui->spinBox_RM_Entry_width->blockSignals(false); + this->ui->spinBox_RM_Entry_height->blockSignals(false); } void RegionMapEditor::displayRegionMapTileSelector() {