diff --git a/include/graphics/map/MapPanel.h b/include/graphics/map/MapPanel.h index 9dbcbe1..aed97e0 100644 --- a/include/graphics/map/MapPanel.h +++ b/include/graphics/map/MapPanel.h @@ -72,7 +72,7 @@ class MapPanel void redraw(void); void drawLocation(void); void drawObjects(void); - void drawObject(MapObject &obj); + void drawObject(MapObject &obj, bool count = false); bool needsRedraw = false; bool redrawCompleted = true; diff --git a/source/graphics/map/MapPanel.cpp b/source/graphics/map/MapPanel.cpp index 58ebf08..7bd11ea 100644 --- a/source/graphics/map/MapPanel.cpp +++ b/source/graphics/map/MapPanel.cpp @@ -122,11 +122,16 @@ void MapPanel::drawObjects(void) { objectsOnMap = 0; for (auto &it : mapObjects) { - drawObject(*it.second); + drawObject(*it.second, true); } } -void MapPanel::drawObject(MapObject &obj) +/** + * draw a single object + * @param obj object to draw + * @param count if true, count the number of objects drawn + */ +void MapPanel::drawObject(MapObject &obj, bool count) { if (obj.draw) { if (!obj.point.isFiltered) { @@ -139,7 +144,8 @@ void MapPanel::drawObject(MapObject &obj) MapTile &tile = *tileIt->second; if (tile.getX() + obj.point.xPos >= 0 && tile.getX() + obj.point.xPos < widthPixel && tile.getY() + obj.point.yPos >= 0 && tile.getY() + obj.point.yPos < heightPixel) { - objectsOnMap++; + if (count) + objectsOnMap++; obj.draw(obj.id, tile.getX() + obj.point.xPos, tile.getY() + obj.point.yPos, MapTileSettings::getZoomLevel()); return; } @@ -414,7 +420,7 @@ void MapPanel::add(uint32_t id, float lat, float lon, DrawCallback drawCB) } else { auto object = std::unique_ptr( new MapObject({.id = id, .point = GeoPoint(lat, lon, MapTileSettings::getZoomLevel()), .draw = drawCB})); - drawObject(*object); + drawObject(*object, true); mapObjects.emplace(id, std::move(object)); } }