From d04f1e913aaf6b8f0d15c86b6d326d6f238363e7 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Thu, 12 Mar 2020 22:38:36 -0400 Subject: [PATCH 1/3] Fix blockdata_path error check --- src/project.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/project.cpp b/src/project.cpp index 20c864cc..06bcd001 100644 --- a/src/project.cpp +++ b/src/project.cpp @@ -489,7 +489,7 @@ bool Project::readMapLayouts() { return false; } layout->blockdata_path = layoutObj["blockdata_filepath"].toString(); - if (layout->border_path.isEmpty()) { + if (layout->blockdata_path.isEmpty()) { logError(QString("Missing 'blockdata_filepath' value on layout %1 in %2").arg(i).arg(layoutsFilepath)); return false; } From 5cf0e35ffccb57f25d46266cfb51076457763383 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Fri, 13 Mar 2020 14:24:57 -0400 Subject: [PATCH 2/3] Fix border block cache usage --- include/core/map.h | 3 ++- src/core/map.cpp | 25 +++++++++++++++++++++---- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/include/core/map.h b/include/core/map.h index 8ecc0a9e..74ba4f20 100644 --- a/include/core/map.h +++ b/include/core/map.h @@ -59,7 +59,8 @@ public: int getHeight(); QPixmap render(bool ignoreCache, MapLayout * fromLayout = nullptr); QPixmap renderCollision(qreal opacity, bool ignoreCache); - bool blockChanged(int, Blockdata*); + bool mapBlockChanged(int i, Blockdata * cache); + bool borderBlockChanged(int i, Blockdata * cache); void cacheBlockdata(); void cacheCollision(); Block *getBlock(int x, int y); diff --git a/src/core/map.cpp b/src/core/map.cpp index f9df72fd..c4dfee2d 100644 --- a/src/core/map.cpp +++ b/src/core/map.cpp @@ -59,7 +59,7 @@ int Map::getHeight() { return layout->height.toInt(nullptr, 0); } -bool Map::blockChanged(int i, Blockdata *cache) { +bool Map::mapBlockChanged(int i, Blockdata * cache) { if (!cache) return true; if (!layout->blockdata) @@ -76,6 +76,23 @@ bool Map::blockChanged(int i, Blockdata *cache) { return layout->blockdata->blocks->value(i) != cache->blocks->value(i); } +bool Map::borderBlockChanged(int i, Blockdata * cache) { + if (!cache) + return true; + if (!layout->border) + return true; + if (!cache->blocks) + return true; + if (!layout->border->blocks) + return true; + if (cache->blocks->length() <= i) + return true; + if (layout->border->blocks->length() <= i) + return true; + + return layout->border->blocks->value(i) != cache->blocks->value(i); +} + void Map::cacheBorder() { if (layout->cached_border) delete layout->cached_border; layout->cached_border = new Blockdata; @@ -127,7 +144,7 @@ QPixmap Map::renderCollision(qreal opacity, bool ignoreCache) { } QPainter painter(&collision_image); for (int i = 0; i < layout->blockdata->blocks->length(); i++) { - if (!ignoreCache && layout->cached_collision && !blockChanged(i, layout->cached_collision)) { + if (!ignoreCache && layout->cached_collision && !mapBlockChanged(i, layout->cached_collision)) { continue; } changed_any = true; @@ -171,7 +188,7 @@ QPixmap Map::render(bool ignoreCache = false, MapLayout * fromLayout) { QPainter painter(&image); for (int i = 0; i < layout->blockdata->blocks->length(); i++) { - if (!ignoreCache && !blockChanged(i, layout->cached_blockdata)) { + if (!ignoreCache && !mapBlockChanged(i, layout->cached_blockdata)) { continue; } changed_any = true; @@ -209,7 +226,7 @@ QPixmap Map::renderBorder() { } QPainter painter(&layout->border_image); for (int i = 0; i < layout->border->blocks->length(); i++) { - if (!blockChanged(i, layout->cached_border)) { + if (!borderBlockChanged(i, layout->cached_border)) { continue; } changed_any = true; From 3ff548326706e13b784a63073fd03618a33c6461 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 23 Mar 2020 05:14:38 -0400 Subject: [PATCH 3/3] Correctly initialize palette for palette editor --- include/ui/paletteeditor.h | 2 +- src/ui/paletteeditor.cpp | 5 ++--- src/ui/tileseteditor.cpp | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/include/ui/paletteeditor.h b/include/ui/paletteeditor.h index 679e2872..9cd4da03 100644 --- a/include/ui/paletteeditor.h +++ b/include/ui/paletteeditor.h @@ -23,7 +23,7 @@ public: class PaletteEditor : public QMainWindow { Q_OBJECT public: - explicit PaletteEditor(Project*, Tileset*, Tileset*, QWidget *parent = nullptr); + explicit PaletteEditor(Project*, Tileset*, Tileset*, int paletteId, QWidget *parent = nullptr); ~PaletteEditor(); void setPaletteId(int); void setTilesets(Tileset*, Tileset*); diff --git a/src/ui/paletteeditor.cpp b/src/ui/paletteeditor.cpp index c573fa79..87169784 100644 --- a/src/ui/paletteeditor.cpp +++ b/src/ui/paletteeditor.cpp @@ -5,7 +5,7 @@ #include #include "log.h" -PaletteEditor::PaletteEditor(Project *project, Tileset *primaryTileset, Tileset *secondaryTileset, QWidget *parent) : +PaletteEditor::PaletteEditor(Project *project, Tileset *primaryTileset, Tileset *secondaryTileset, int paletteId, QWidget *parent) : QMainWindow(parent), ui(new Ui::PaletteEditor) { @@ -110,8 +110,7 @@ PaletteEditor::PaletteEditor(Project *project, Tileset *primaryTileset, Tileset } this->initColorSliders(); - this->refreshColorSliders(); - this->refreshColors(); + this->setPaletteId(paletteId); this->commitEditHistory(this->ui->spinBox_PaletteId->value()); } diff --git a/src/ui/tileseteditor.cpp b/src/ui/tileseteditor.cpp index 85b94c35..2ace3e77 100644 --- a/src/ui/tileseteditor.cpp +++ b/src/ui/tileseteditor.cpp @@ -591,7 +591,7 @@ void TilesetEditor::on_actionChange_Metatiles_Count_triggered() void TilesetEditor::on_actionChange_Palettes_triggered() { if (!this->paletteEditor) { - this->paletteEditor = new PaletteEditor(this->project, this->primaryTileset, this->secondaryTileset, this); + this->paletteEditor = new PaletteEditor(this->project, this->primaryTileset, this->secondaryTileset, this->paletteId, this); connect(this->paletteEditor, SIGNAL(changedPaletteColor()), this, SLOT(onPaletteEditorChangedPaletteColor())); connect(this->paletteEditor, SIGNAL(changedPalette(int)), this, SLOT(onPaletteEditorChangedPalette(int))); }