draw map connections with current map tilesets

This commit is contained in:
garak 2019-11-04 18:44:57 -05:00
parent 631896a708
commit 2f21f83217
3 changed files with 12 additions and 8 deletions

View file

@ -57,7 +57,7 @@ public:
static QString bgEventsLabelFromName(QString mapName); static QString bgEventsLabelFromName(QString mapName);
int getWidth(); int getWidth();
int getHeight(); int getHeight();
QPixmap render(bool ignoreCache); QPixmap render(bool ignoreCache, MapLayout * fromLayout = nullptr);
QPixmap renderCollision(qreal opacity, bool ignoreCache); QPixmap renderCollision(qreal opacity, bool ignoreCache);
bool blockChanged(int, Blockdata*); bool blockChanged(int, Blockdata*);
void cacheBlockdata(); void cacheBlockdata();
@ -74,7 +74,7 @@ public:
QList<Event*> getAllEvents(); QList<Event*> getAllEvents();
void removeEvent(Event*); void removeEvent(Event*);
void addEvent(Event*); void addEvent(Event*);
QPixmap renderConnection(MapConnection); QPixmap renderConnection(MapConnection, MapLayout *);
QPixmap renderBorder(); QPixmap renderBorder();
void setDimensions(int newWidth, int newHeight, bool setNewBlockData = true); void setDimensions(int newWidth, int newHeight, bool setNewBlockData = true);
void cacheBorder(); void cacheBorder();

View file

@ -152,7 +152,7 @@ QPixmap Map::renderCollision(qreal opacity, bool ignoreCache) {
return collision_pixmap; return collision_pixmap;
} }
QPixmap Map::render(bool ignoreCache = false) { QPixmap Map::render(bool ignoreCache = false, MapLayout * fromLayout) {
bool changed_any = false; bool changed_any = false;
int width_ = getWidth(); int width_ = getWidth();
int height_ = getHeight(); int height_ = getHeight();
@ -176,7 +176,11 @@ QPixmap Map::render(bool ignoreCache = false) {
} }
changed_any = true; changed_any = true;
Block block = layout->blockdata->blocks->value(i); 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_y = width_ ? i / width_ : 0;
int map_x = width_ ? i % width_ : 0; int map_x = width_ ? i % width_ : 0;
QPoint metatile_origin = QPoint(map_x * 16, map_y * 16); QPoint metatile_origin = QPoint(map_x * 16, map_y * 16);
@ -223,8 +227,8 @@ QPixmap Map::renderBorder() {
return layout->border_pixmap; return layout->border_pixmap;
} }
QPixmap Map::renderConnection(MapConnection connection) { QPixmap Map::renderConnection(MapConnection connection, MapLayout * fromLayout) {
render(true); render(true, fromLayout);
int x, y, w, h; int x, y, w, h;
if (connection.direction == "up") { if (connection.direction == "up") {
x = 0; x = 0;

View file

@ -673,7 +673,7 @@ void Editor::setCurrentConnectionDirection(QString curDirection) {
selected_connection_item->connection->direction = curDirection; selected_connection_item->connection->direction = curDirection;
Map *connected_map = project->getMap(selected_connection_item->connection->map_name); 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); int offset = selected_connection_item->connection->offset.toInt(nullptr, 0);
selected_connection_item->initialOffset = offset; selected_connection_item->initialOffset = offset;
int x = 0, y = 0; int x = 0, y = 0;
@ -1279,7 +1279,7 @@ void Editor::displayMapConnections() {
void Editor::createConnectionItem(MapConnection* connection, bool hide) { void Editor::createConnectionItem(MapConnection* connection, bool hide) {
Map *connected_map = project->getMap(connection->map_name); 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 offset = connection->offset.toInt(nullptr, 0);
int x = 0, y = 0; int x = 0, y = 0;
if (connection->direction == "up") { if (connection->direction == "up") {