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 52c4aca5ea
commit 79b9e6d3db

View file

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