Changed: #1302 Landscape scene works correctly in world editor plugin.

This commit is contained in:
dnk-88 2011-08-08 21:59:09 +03:00
parent 3c9d4c3773
commit 845cee0a88

View file

@ -202,13 +202,16 @@ QGraphicsItem *LandscapeSceneBase::createItemEmptyZone(const ZonePosition &zoneP
void LandscapeSceneBase::deleteItemZone(const ZonePosition &zonePos) void LandscapeSceneBase::deleteItemZone(const ZonePosition &zonePos)
{ {
QGraphicsItem *item = itemAt(zonePos.x * m_cellSize, abs(zonePos.y) * m_cellSize); QList<QGraphicsItem *> listItems = items(QPointF(zonePos.x * m_cellSize + 10, abs(zonePos.y) * m_cellSize + 10),
Qt::IntersectsItemBoundingRect, Qt::AscendingOrder);
// TODO: delete LAYER_BLACKOUT_NAME Q_FOREACH(QGraphicsItem *item, listItems)
if ((item != 0) && (item->data(ZONE_NAME).toString() != QString(LAYER_BLACKOUT_NAME))) {
if (dynamic_cast<QGraphicsPixmapItem *>(item) != 0)
{ {
removeItem(item); removeItem(item);
delete item; delete item;
return;
}
} }
} }
@ -246,6 +249,7 @@ void LandscapeSceneBase::delZoneRegion(const NLLIGO::CZoneRegion &zoneRegion)
{ {
for (sint32 j = zoneRegion.getMinY(); j <= zoneRegion.getMaxY(); ++j) for (sint32 j = zoneRegion.getMinY(); j <= zoneRegion.getMaxY(); ++j)
{ {
deleteItemZone(ZonePosition(i, -j, -1)); deleteItemZone(ZonePosition(i, -j, -1));
} }
} }
@ -314,10 +318,13 @@ void LandscapeSceneBase::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent)
bool LandscapeSceneBase::checkUnderZone(const int posX, const int posY) bool LandscapeSceneBase::checkUnderZone(const int posX, const int posY)
{ {
// TODO: it will not work correctly in world editor QList<QGraphicsItem *> listItems = items(QPointF(posX * m_cellSize + 10, abs(posY) * m_cellSize + 10),
QGraphicsItem *item = itemAt((posX * m_cellSize), abs(posY) * m_cellSize); Qt::IntersectsItemBoundingRect, Qt::AscendingOrder);
if (item != 0) Q_FOREACH(QGraphicsItem *item, listItems)
{
if (dynamic_cast<QGraphicsPixmapItem *>(item) != 0)
return true; return true;
}
return false; return false;
} }