From 2f21f83217154eb25128a57b63567614d6c3a628 Mon Sep 17 00:00:00 2001 From: garak Date: Mon, 4 Nov 2019 18:44:57 -0500 Subject: [PATCH] draw map connections with current map tilesets --- include/core/map.h | 4 ++-- src/core/map.cpp | 12 ++++++++---- src/editor.cpp | 4 ++-- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/include/core/map.h b/include/core/map.h index d50c7b7e..8ecc0a9e 100644 --- a/include/core/map.h +++ b/include/core/map.h @@ -57,7 +57,7 @@ public: static QString bgEventsLabelFromName(QString mapName); int getWidth(); int getHeight(); - QPixmap render(bool ignoreCache); + QPixmap render(bool ignoreCache, MapLayout * fromLayout = nullptr); QPixmap renderCollision(qreal opacity, bool ignoreCache); bool blockChanged(int, Blockdata*); void cacheBlockdata(); @@ -74,7 +74,7 @@ public: QList getAllEvents(); void removeEvent(Event*); void addEvent(Event*); - QPixmap renderConnection(MapConnection); + QPixmap renderConnection(MapConnection, MapLayout *); QPixmap renderBorder(); void setDimensions(int newWidth, int newHeight, bool setNewBlockData = true); void cacheBorder(); diff --git a/src/core/map.cpp b/src/core/map.cpp index b56be61f..f9df72fd 100644 --- a/src/core/map.cpp +++ b/src/core/map.cpp @@ -152,7 +152,7 @@ QPixmap Map::renderCollision(qreal opacity, bool ignoreCache) { return collision_pixmap; } -QPixmap Map::render(bool ignoreCache = false) { +QPixmap Map::render(bool ignoreCache = false, MapLayout * fromLayout) { bool changed_any = false; int width_ = getWidth(); int height_ = getHeight(); @@ -176,7 +176,11 @@ QPixmap Map::render(bool ignoreCache = false) { } changed_any = true; Block block = layout->blockdata->blocks->value(i); - QImage metatile_image = getMetatileImage(block.tile, layout->tileset_primary, layout->tileset_secondary); + QImage metatile_image = getMetatileImage( + block.tile, + fromLayout ? fromLayout->tileset_primary : layout->tileset_primary, + fromLayout ? fromLayout->tileset_secondary : layout->tileset_secondary + ); int map_y = width_ ? i / width_ : 0; int map_x = width_ ? i % width_ : 0; QPoint metatile_origin = QPoint(map_x * 16, map_y * 16); @@ -223,8 +227,8 @@ QPixmap Map::renderBorder() { return layout->border_pixmap; } -QPixmap Map::renderConnection(MapConnection connection) { - render(true); +QPixmap Map::renderConnection(MapConnection connection, MapLayout * fromLayout) { + render(true, fromLayout); int x, y, w, h; if (connection.direction == "up") { x = 0; diff --git a/src/editor.cpp b/src/editor.cpp index 6eeea2d0..f634494b 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -673,7 +673,7 @@ void Editor::setCurrentConnectionDirection(QString curDirection) { selected_connection_item->connection->direction = curDirection; Map *connected_map = project->getMap(selected_connection_item->connection->map_name); - QPixmap pixmap = connected_map->renderConnection(*selected_connection_item->connection); + QPixmap pixmap = connected_map->renderConnection(*selected_connection_item->connection, map->layout); int offset = selected_connection_item->connection->offset.toInt(nullptr, 0); selected_connection_item->initialOffset = offset; int x = 0, y = 0; @@ -1279,7 +1279,7 @@ void Editor::displayMapConnections() { void Editor::createConnectionItem(MapConnection* connection, bool hide) { Map *connected_map = project->getMap(connection->map_name); - QPixmap pixmap = connected_map->renderConnection(*connection); + QPixmap pixmap = connected_map->renderConnection(*connection, map->layout); int offset = connection->offset.toInt(nullptr, 0); int x = 0, y = 0; if (connection->direction == "up") {