diff --git a/include/ui/tileseteditor.h b/include/ui/tileseteditor.h index f4205b38..75c8b245 100644 --- a/include/ui/tileseteditor.h +++ b/include/ui/tileseteditor.h @@ -38,6 +38,7 @@ public: ~TilesetEditor(); void setTilesets(QString, QString); void init(Project*, QString, QString); + void selectMetatile(uint16_t metatileId); private slots: void onHoveredMetatileChanged(uint16_t); diff --git a/include/ui/tileseteditormetatileselector.h b/include/ui/tileseteditormetatileselector.h index 79bb1db8..e1d1f829 100644 --- a/include/ui/tileseteditormetatileselector.h +++ b/include/ui/tileseteditormetatileselector.h @@ -18,6 +18,7 @@ public: void setTilesets(Tileset*, Tileset*); uint16_t getSelectedMetatile(); void updateSelectedMetatile(); + QPoint getMetatileIdCoordsOnWidget(uint16_t metatileId); protected: void mousePressEvent(QGraphicsSceneMouseEvent*); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index be77b4a4..779a3259 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -2452,6 +2452,7 @@ void MainWindow::on_actionTileset_Editor_triggered() } else { this->tilesetEditor->activateWindow(); } + this->tilesetEditor->selectMetatile(this->editor->metatile_selector_item->getSelectedMetatiles()->at(0)); } void MainWindow::on_toolButton_ExpandAll_clicked() diff --git a/src/ui/tileseteditor.cpp b/src/ui/tileseteditor.cpp index 2dacf1dc..e038bd97 100644 --- a/src/ui/tileseteditor.cpp +++ b/src/ui/tileseteditor.cpp @@ -105,6 +105,12 @@ void TilesetEditor::init(Project *project, QString primaryTilesetLabel, QString metatileHistory.push(commit); } +void TilesetEditor::selectMetatile(uint16_t metatileId) { + this->metatileSelector->select(metatileId); + QPoint pos = this->metatileSelector->getMetatileIdCoordsOnWidget(metatileId); + this->ui->scrollArea_Metatiles->ensureVisible(pos.x(), pos.y()); +} + void TilesetEditor::setTilesets(QString primaryTilesetLabel, QString secondaryTilesetLabel) { delete this->primaryTileset; delete this->secondaryTileset; diff --git a/src/ui/tileseteditormetatileselector.cpp b/src/ui/tileseteditormetatileselector.cpp index 3af8c3f3..bc91ea6e 100644 --- a/src/ui/tileseteditormetatileselector.cpp +++ b/src/ui/tileseteditormetatileselector.cpp @@ -117,3 +117,10 @@ QPoint TilesetEditorMetatileSelector::getMetatileIdCoords(uint16_t metatileId) { : metatileId - Project::getNumMetatilesPrimary() + this->primaryTileset->metatiles->length(); return QPoint(index % this->numMetatilesWide, index / this->numMetatilesWide); } + +QPoint TilesetEditorMetatileSelector::getMetatileIdCoordsOnWidget(uint16_t metatileId) { + QPoint pos = getMetatileIdCoords(metatileId); + pos.rx() = (pos.x() * this->cellWidth) + (this->cellWidth / 2); + pos.ry() = (pos.y() * this->cellHeight) + (this->cellHeight / 2); + return pos; +}