fix stations were not drawn

This commit is contained in:
2026-05-22 21:15:26 +02:00
parent 9d20048705
commit 4e3dc51981
5 changed files with 97 additions and 11 deletions

View File

@@ -145,6 +145,7 @@ void ArenaView::paintGL()
drawTiles(painter);
drawBuildings(painter);
//drawStations(painter);
drawScrap(painter);
drawShips(painter);
drawBeams(painter);
@@ -264,6 +265,48 @@ void ArenaView::drawScrap(QPainter& painter)
}
}
void ArenaView::drawStations(QPainter& painter)
{
m_sim->admin().forEach<StationBody, Faction, Health>(
[&](entt::entity /*e*/, const StationBody& sb, const Faction& f, const Health& h)
{
const BuildingType visType = f.isEnemy
? BuildingType::EnemyDefenceStation
: BuildingType::PlayerDefenceStation;
const std::map<BuildingType, BuildingVisuals>::const_iterator it =
m_visuals->buildings.find(visType);
if (it == m_visuals->buildings.end()) { return; }
const BuildingVisuals& bv = it->second;
painter.setPen(Qt::NoPen);
for (const QPoint& cell : sb.bodyCells)
{
painter.fillRect(tileRect(cell), bv.fill);
}
const QPointF tl = tileToWidget(sb.anchor);
const QRectF bboxRect(tl.x(), tl.y(),
sb.footprint.width() * static_cast<qreal>(tilePx()),
sb.footprint.height() * static_cast<qreal>(tilePx()));
painter.setPen(QPen(bv.outline, 1));
painter.setBrush(Qt::NoBrush);
painter.drawRect(bboxRect);
if (h.maxHp > 0.0f)
{
const float fraction = std::max(0.0f, h.hp / h.maxHp);
const qreal barH = static_cast<qreal>(tilePx()) * 0.12;
const qreal barY = bboxRect.bottom() + 1.0;
const qreal barW = bboxRect.width();
painter.fillRect(QRectF(bboxRect.left(), barY, barW, barH),
QColor(60, 60, 60));
painter.fillRect(QRectF(bboxRect.left(), barY, barW * static_cast<qreal>(fraction), barH),
f.isEnemy ? QColor(200, 60, 60) : QColor(60, 200, 60));
}
});
}
void ArenaView::drawShips(QPainter& painter)
{
m_sim->admin().forEach<ShipIdentity, Position, Velocity, Faction>(
@@ -312,3 +355,4 @@ void ArenaView::drawBeams(QPainter& painter)
worldToWidget(*targetPos + beam.targetOffset));
}
}

View File

@@ -43,6 +43,7 @@ private slots:
private:
void drawTiles(QPainter& painter);
void drawBuildings(QPainter& painter);
void drawStations(QPainter& painter);
void drawScrap(QPainter& painter);
void drawShips(QPainter& painter);
void drawBeams(QPainter& painter);