From b065934bc3dea18d8312eeb3d81f6db491ac645c Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 9 Jun 2025 14:19:47 -0400 Subject: [PATCH] Fix border cache check using incorrect blockdata --- include/core/maplayout.h | 2 +- src/core/maplayout.cpp | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/include/core/maplayout.h b/include/core/maplayout.h index 019a983e..5a2e23b3 100644 --- a/include/core/maplayout.h +++ b/include/core/maplayout.h @@ -125,7 +125,7 @@ public: bool loadBorder(const QString &root); bool loadBlockdata(const QString &root); - bool layoutBlockChanged(int i, const Blockdata &cache); + bool layoutBlockChanged(int i, const Blockdata &curData, const Blockdata &cache); uint16_t getBorderMetatileId(int x, int y); void setBorderMetatileId(int x, int y, uint16_t metatileId, bool enableScriptCallback = false); diff --git a/src/core/maplayout.cpp b/src/core/maplayout.cpp index f49f58f4..4108400f 100644 --- a/src/core/maplayout.cpp +++ b/src/core/maplayout.cpp @@ -150,13 +150,13 @@ void Layout::cacheCollision() { this->cached_collision.append(block); } -bool Layout::layoutBlockChanged(int i, const Blockdata &cache) { +bool Layout::layoutBlockChanged(int i, const Blockdata &curData, const Blockdata &cache) { if (cache.length() <= i) return true; - if (this->blockdata.length() <= i) + if (curData.length() <= i) return true; - return this->blockdata.at(i) != cache.at(i); + return curData.at(i) != cache.at(i); } uint16_t Layout::getBorderMetatileId(int x, int y) { @@ -358,7 +358,7 @@ QPixmap Layout::render(bool ignoreCache, Layout *fromLayout, QRect bounds) { QPainter painter(&this->image); for (int i = 0; i < this->blockdata.length(); i++) { - if (!ignoreCache && !layoutBlockChanged(i, this->cached_blockdata)) { + if (!ignoreCache && !layoutBlockChanged(i, this->blockdata, this->cached_blockdata)) { continue; } int map_y = width_ ? i / width_ : 0; @@ -409,7 +409,7 @@ QPixmap Layout::renderCollision(bool ignoreCache) { } QPainter painter(&collision_image); for (int i = 0; i < this->blockdata.length(); i++) { - if (!ignoreCache && !layoutBlockChanged(i, this->cached_collision)) { + if (!ignoreCache && !layoutBlockChanged(i, this->blockdata, this->cached_collision)) { continue; } changed_any = true; @@ -446,7 +446,7 @@ QPixmap Layout::renderBorder(bool ignoreCache) { } QPainter painter(&this->border_image); for (int i = 0; i < this->border.length(); i++) { - if (!ignoreCache && (!border_resized && !layoutBlockChanged(i, this->cached_border))) { + if (!ignoreCache && (!border_resized && !layoutBlockChanged(i, this->border, this->cached_border))) { continue; }