diff --git a/src/ui/SelectedBuildingPanel.cpp b/src/ui/SelectedBuildingPanel.cpp index 8e6748a..f39e210 100644 --- a/src/ui/SelectedBuildingPanel.cpp +++ b/src/ui/SelectedBuildingPanel.cpp @@ -1,5 +1,6 @@ #include "SelectedBuildingPanel.h" +#include #include #include #include @@ -264,6 +265,30 @@ void SelectedBuildingPanel::refreshBuffers(const Building* b) } } + if (isProductionBuilding(b->type) && (recipe || shipDef)) + { + const double durationSeconds = recipe + ? recipe->durationSeconds + : shipDef->blueprint.productionTimeSeconds; + + bufText += QString("Cycle: %1 s\n").arg(durationSeconds, 0, 'f', 1); + + if (b->production.has_value()) + { + const Tick cycleTicks = secondsToTicks(durationSeconds); + const Tick completesAt = b->production->completesAt; + const Tick currentTick = m_sim->currentTick(); + const Tick elapsed = currentTick - (completesAt - cycleTicks); + const int pct = static_cast( + std::max(Tick(0), std::min(cycleTicks, elapsed)) * 100 / cycleTicks); + bufText += QString("Progress: %1%\n").arg(pct); + } + else + { + bufText += "Progress: idle\n"; + } + } + m_buffersLabel->setText(bufText); }