コード例 #1
0
ファイル: cmapwidget.cpp プロジェクト: adamfur/kmuddy
/** 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());
  }
}