diff --git a/include/mainwindow.h b/include/mainwindow.h index 1174060b..19b8cbef 100644 --- a/include/mainwindow.h +++ b/include/mainwindow.h @@ -46,7 +46,8 @@ public: Q_INVOKABLE QJSValue getBlock(int x, int y); void tryRedrawMapArea(bool forceRedraw); void tryCommitMapChanges(bool commitChanges); - Q_INVOKABLE void setBlock(int x, int y, int tile, int collision, int elevation, bool forceRedraw = true, bool commitChanges = true); + Q_INVOKABLE void setBlock(int x, int y, int metatileId, int collision, int elevation, bool forceRedraw = true, bool commitChanges = true); + Q_INVOKABLE void setBlock(int x, int y, int rawValue, bool forceRedraw = true, bool commitChanges = true); Q_INVOKABLE void setBlocksFromSelection(int x, int y, bool forceRedraw = true, bool commitChanges = true); Q_INVOKABLE int getMetatileId(int x, int y); Q_INVOKABLE void setMetatileId(int x, int y, int metatileId, bool forceRedraw = true, bool commitChanges = true); diff --git a/src/editor.cpp b/src/editor.cpp index d15b3bbc..ef4e6ff1 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -1075,7 +1075,7 @@ QString Editor::getMovementPermissionText(uint16_t collision, uint16_t elevation } else if (collision == 0) { message = QString("Collision: Passable, Elevation: %1").arg(elevation); } else { - message = QString("Collision: Impassable, Elevation: %1").arg(elevation); + message = QString("Collision: Impassable (%1), Elevation: %2").arg(collision).arg(elevation); } return message; } diff --git a/src/mainwindow_scriptapi.cpp b/src/mainwindow_scriptapi.cpp index 5875bb08..784a0354 100644 --- a/src/mainwindow_scriptapi.cpp +++ b/src/mainwindow_scriptapi.cpp @@ -50,10 +50,18 @@ void MainWindow::tryCommitMapChanges(bool commitChanges) { } } -void MainWindow::setBlock(int x, int y, int tile, int collision, int elevation, bool forceRedraw, bool commitChanges) { +void MainWindow::setBlock(int x, int y, int metatileId, int collision, int elevation, bool forceRedraw, bool commitChanges) { if (!this->editor || !this->editor->map) return; - this->editor->map->setBlock(x, y, Block(tile, collision, elevation)); + this->editor->map->setBlock(x, y, Block(metatileId, collision, elevation)); + this->tryCommitMapChanges(commitChanges); + this->tryRedrawMapArea(forceRedraw); +} + +void MainWindow::setBlock(int x, int y, int rawValue, bool forceRedraw, bool commitChanges) { + if (!this->editor || !this->editor->map) + return; + this->editor->map->setBlock(x, y, Block(static_cast(rawValue))); this->tryCommitMapChanges(commitChanges); this->tryRedrawMapArea(forceRedraw); } diff --git a/src/ui/imageproviders.cpp b/src/ui/imageproviders.cpp index 200d478b..192afc85 100644 --- a/src/ui/imageproviders.cpp +++ b/src/ui/imageproviders.cpp @@ -8,7 +8,7 @@ QImage getCollisionMetatileImage(Block block) { } QImage getCollisionMetatileImage(int collision, int elevation) { - int x = collision * 16; + int x = (collision != 0) * 16; int y = elevation * 16; QPixmap collisionImage = QPixmap(":/images/collisions.png").copy(x, y, 16, 16); return collisionImage.toImage(); diff --git a/src/ui/movementpermissionsselector.cpp b/src/ui/movementpermissionsselector.cpp index da6d7178..9bad2a0f 100644 --- a/src/ui/movementpermissionsselector.cpp +++ b/src/ui/movementpermissionsselector.cpp @@ -16,7 +16,7 @@ uint16_t MovementPermissionsSelector::getSelectedElevation() { } void MovementPermissionsSelector::select(uint16_t collision, uint16_t elevation) { - SelectablePixmapItem::select(collision, elevation, 0, 0); + SelectablePixmapItem::select(collision != 0, elevation, 0, 0); } void MovementPermissionsSelector::hoverMoveEvent(QGraphicsSceneHoverEvent *event) {