/** Used to draw all the elments */ void CMapWidget::drawElements(QPainter *p) { CMapLevel *level = viewWidget->getCurrentlyViewedLevel(); if (!level) return; CMapLevel *lowerLevel = level->getPrevLevel(); CMapLevel *upperLevel = level->getNextLevel(); // Mark all paths as undrawn foreach (CMapRoom *room, *level->getRoomList()) foreach (CMapPath *path, *room->getPathList()) path->setDone(false); if (lowerLevel && mapManager->getMapData()->showLowerLevel) { foreach (CMapRoom *room, *lowerLevel->getRoomList()) foreach (CMapPath *path, *room->getPathList()) path->setDone(false); } if (upperLevel && mapManager->getMapData()->showUpperLevel) { foreach (CMapRoom *room, *upperLevel->getRoomList()) foreach (CMapPath *path, *room->getPathList()) path->setDone(false); } // Draw the upper map elements if (lowerLevel && mapManager->getMapData()->showLowerLevel) foreach (CMapElement *element, lowerLevel->getAllElements()) element->lowerPaint(p, viewWidget->getCurrentlyViewedZone()); // Paint the map elements of the current map foreach (CMapElement *element, level->getAllElements()) if (element->getDoPaint()) element->paint(p, viewWidget->getCurrentlyViewedZone()); // Draw the upper map elements if (upperLevel && mapManager->getMapData()->showUpperLevel) { foreach (CMapElement *element, upperLevel->getAllElements()) element->higherPaint(p, viewWidget->getCurrentlyViewedZone()); } }