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) {