Hide connection tiles that cant be seen from current map
This commit is contained in:
parent
f404f8c11f
commit
2f20a5d0b3
3 changed files with 36 additions and 0 deletions
|
@ -64,6 +64,7 @@ public:
|
|||
void displayMapBorder();
|
||||
void displayMapGrid();
|
||||
void displayWildMonTables();
|
||||
void maskNonVisibleConnectionTiles();
|
||||
|
||||
void updateMapBorder();
|
||||
void updateMapConnections();
|
||||
|
@ -109,6 +110,7 @@ public:
|
|||
ConnectionPixmapItem* selected_connection_item = nullptr;
|
||||
QList<QGraphicsPixmapItem*> connection_items;
|
||||
QList<ConnectionPixmapItem*> connection_edit_items;
|
||||
QGraphicsPathItem *connection_mask = nullptr;
|
||||
CollisionPixmapItem *collision_item = nullptr;
|
||||
QGraphicsItemGroup *events_group = nullptr;
|
||||
QList<QGraphicsPixmapItem*> borderItems;
|
||||
|
|
|
@ -759,11 +759,13 @@ void Editor::updateCurrentConnectionDirection(QString curDirection) {
|
|||
QString originalDirection = selected_connection_item->connection->direction;
|
||||
setCurrentConnectionDirection(curDirection);
|
||||
updateMirroredConnectionDirection(selected_connection_item->connection, originalDirection);
|
||||
maskNonVisibleConnectionTiles();
|
||||
}
|
||||
|
||||
void Editor::onConnectionMoved(MapConnection* connection) {
|
||||
updateMirroredConnectionOffset(connection);
|
||||
onConnectionOffsetChanged(connection->offset.toInt());
|
||||
maskNonVisibleConnectionTiles();
|
||||
}
|
||||
|
||||
void Editor::onConnectionOffsetChanged(int newOffset) {
|
||||
|
@ -1458,6 +1460,8 @@ void Editor::displayMapConnections() {
|
|||
if (!connection_edit_items.empty()) {
|
||||
onConnectionItemSelected(connection_edit_items.first());
|
||||
}
|
||||
|
||||
maskNonVisibleConnectionTiles();
|
||||
}
|
||||
|
||||
void Editor::createConnectionItem(MapConnection* connection, bool hide) {
|
||||
|
@ -1502,6 +1506,31 @@ void Editor::createConnectionItem(MapConnection* connection, bool hide) {
|
|||
connection_edit_items.append(connection_edit_item);
|
||||
}
|
||||
|
||||
// Hides connected map tiles that cannot be seen from the current map (beyond BORDER_DISTANCE).
|
||||
void Editor::maskNonVisibleConnectionTiles() {
|
||||
if (connection_mask) {
|
||||
if (connection_mask->scene()) {
|
||||
connection_mask->scene()->removeItem(connection_mask);
|
||||
}
|
||||
delete connection_mask;
|
||||
}
|
||||
|
||||
QPainterPath mask;
|
||||
mask.addRect(scene->itemsBoundingRect().toRect());
|
||||
mask.addRect(
|
||||
-BORDER_DISTANCE * 16,
|
||||
-BORDER_DISTANCE * 16,
|
||||
(map->getWidth() + BORDER_DISTANCE * 2) * 16,
|
||||
(map->getHeight() + BORDER_DISTANCE * 2) * 16
|
||||
);
|
||||
|
||||
// Mask the tiles with the current theme's background color.
|
||||
QPen pen(ui->graphicsView_Map->palette().color(QPalette::Base));
|
||||
QBrush brush(ui->graphicsView_Map->palette().color(QPalette::Base));
|
||||
|
||||
connection_mask = scene->addPath(mask, pen, brush);
|
||||
}
|
||||
|
||||
void Editor::displayMapBorder() {
|
||||
for (QGraphicsPixmapItem* item : borderItems) {
|
||||
if (item->scene()) {
|
||||
|
@ -1548,6 +1577,8 @@ void Editor::updateMapConnections() {
|
|||
connection_edit_items[i]->basePixmap = pixmap;
|
||||
connection_edit_items[i]->setPixmap(pixmap);
|
||||
}
|
||||
|
||||
maskNonVisibleConnectionTiles();
|
||||
}
|
||||
|
||||
int Editor::getBorderDrawDistance(int dimension) {
|
||||
|
@ -1604,6 +1635,7 @@ void Editor::updateConnectionOffset(int offset) {
|
|||
}
|
||||
selected_connection_item->blockSignals(false);
|
||||
updateMirroredConnectionOffset(selected_connection_item->connection);
|
||||
maskNonVisibleConnectionTiles();
|
||||
}
|
||||
|
||||
void Editor::setConnectionMap(QString mapName) {
|
||||
|
@ -1624,6 +1656,7 @@ void Editor::setConnectionMap(QString mapName) {
|
|||
selected_connection_item->connection->map_name = mapName;
|
||||
setCurrentConnectionDirection(selected_connection_item->connection->direction);
|
||||
updateMirroredConnectionMap(selected_connection_item->connection, originalMapName);
|
||||
maskNonVisibleConnectionTiles();
|
||||
}
|
||||
|
||||
void Editor::addNewConnection() {
|
||||
|
|
|
@ -2536,6 +2536,7 @@ void MainWindow::on_actionThemes_triggered()
|
|||
QString theme = themeSelector->currentText();
|
||||
porymapConfig.setTheme(theme);
|
||||
this->setTheme(theme);
|
||||
editor->maskNonVisibleConnectionTiles();
|
||||
}
|
||||
});
|
||||
connect(&buttonBox, SIGNAL(rejected()), &themeSelectorWindow, SLOT(reject()));
|
||||
|
|
Loading…
Reference in a new issue