diff --git a/editor.cpp b/editor.cpp index 33da798c..6fb302ca 100755 --- a/editor.cpp +++ b/editor.cpp @@ -295,6 +295,31 @@ void MetatilesPixmapItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { mousePressEvent(event); } +void CollisionMetatilesPixmapItem::updateCurHoveredMetatile(QPointF pos) { + int x = ((int)pos.x()) / 16; + int y = ((int)pos.y()) / 16; + int width = pixmap().width() / 16; + int height = pixmap().height() / 16; + if (x < 0 || x >= width || y < 0 || y >= height) { + map->clearHoveredCollisionTile(); + } else { + int collision = y * width + x; + map->hoveredCollisionTileChanged(collision); + } +} + +void ElevationMetatilesPixmapItem::updateCurHoveredMetatile(QPointF pos) { + int x = ((int)pos.x()) / 16; + int y = ((int)pos.y()) / 16; + int width = pixmap().width() / 16; + int height = pixmap().height() / 16; + if (x < 0 || x >= width || y < 0 || y >= height) { + map->clearHoveredElevationTile(); + } else { + int elevation = y * width + x; + map->hoveredElevationTileChanged(elevation); + } +} void MapPixmapItem::paint(QGraphicsSceneMouseEvent *event) { if (map) { diff --git a/editor.h b/editor.h index 004084db..76e1d65a 100755 --- a/editor.h +++ b/editor.h @@ -247,8 +247,8 @@ public: Map* map = NULL; virtual void pick(uint); virtual void draw(); -private: - void updateCurHoveredMetatile(QPointF pos); +protected: + virtual void updateCurHoveredMetatile(QPointF pos); private slots: void paintTileChanged(Map *map); protected: @@ -272,6 +272,8 @@ public: virtual void draw() { setPixmap(map->renderCollisionMetatiles()); } +protected: + virtual void updateCurHoveredMetatile(QPointF pos); private slots: void paintCollisionChanged(Map *map) { draw(); @@ -291,6 +293,8 @@ public: virtual void draw() { setPixmap(map->renderElevationMetatiles()); } +protected: + virtual void updateCurHoveredMetatile(QPointF pos); private slots: void paintCollisionChanged(Map *map) { draw(); diff --git a/map.cpp b/map.cpp index 48ab7653..15587df8 100755 --- a/map.cpp +++ b/map.cpp @@ -754,3 +754,19 @@ void Map::hoveredMetatileChanged(int block) { void Map::clearHoveredMetatile() { emit statusBarMessage(QString("")); } + +void Map::hoveredCollisionTileChanged(int collision) { + emit statusBarMessage(QString("Collision: %1").arg(collision)); +} + +void Map::clearHoveredCollisionTile() { + emit statusBarMessage(QString("")); +} + +void Map::hoveredElevationTileChanged(int elevation) { + emit statusBarMessage(QString("Elevation: %1").arg(elevation)); +} + +void Map::clearHoveredElevationTile() { + emit statusBarMessage(QString("")); +} diff --git a/map.h b/map.h index c0336a24..1421d07c 100755 --- a/map.h +++ b/map.h @@ -186,6 +186,10 @@ public: void clearHoveredTile(); void hoveredMetatileChanged(int block); void clearHoveredMetatile(); + void hoveredCollisionTileChanged(int collision); + void clearHoveredCollisionTile(); + void hoveredElevationTileChanged(int elevation); + void clearHoveredElevationTile(); QList > getBlockPalettes(int metatile_index);