From 2ea0cb815d19c9b6197b075ed30fef6c1beae1d4 Mon Sep 17 00:00:00 2001 From: mlangkabel Date: Tue, 14 Jul 2026 20:50:43 +0200 Subject: [PATCH] fix issue where items on building's output port were not counted to output display in building panel --- src/ui/SelectedBuildingPanel.cpp | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/ui/SelectedBuildingPanel.cpp b/src/ui/SelectedBuildingPanel.cpp index 1d6ca72..1e3ee73 100644 --- a/src/ui/SelectedBuildingPanel.cpp +++ b/src/ui/SelectedBuildingPanel.cpp @@ -479,13 +479,24 @@ void SelectedBuildingPanel::refreshBuffers(const Building* b) bufText += "\n"; } + // Count output-side items: buffered plus still-emerging on the output belts. + // An emerging item still belongs to the output buffer (REQ-MAT-OUTPUT-EMERGE), + // so it must be included here or it would vanish from the panel while animating. + std::map outCounts; + for (const Item& item : b->outputBuffer.items) + { + outCounts[item.type.id]++; + } + for (const std::vector& lane : b->emergingItems) + { + for (const BeltItemSlot& slot : lane) + { + outCounts[slot.item.type.id]++; + } + } + if (recipe && !recipe->outputs.empty()) { - std::map outCounts; - for (const Item& item : b->outputBuffer.items) - { - outCounts[item.type.id]++; - } bufText += tr("Output: "); for (const RecipeOutput& out : recipe->outputs) { @@ -497,13 +508,8 @@ void SelectedBuildingPanel::refreshBuffers(const Building* b) + "/" + QString::number(out.amount) + " "; } } - else if (!b->outputBuffer.items.empty()) + else if (!outCounts.empty()) { - std::map outCounts; - for (const Item& item : b->outputBuffer.items) - { - outCounts[item.type.id]++; - } bufText += tr("Output: "); for (const std::pair& entry : outCounts) {