#pragma once #include #include #include #include "SelectionContext.h" struct Building; class ItemChipRow; class SectionBox; // The input and output buffer contents of one building, each a captioned section of item // chips (REQ-UI-SINGLE-SELECTION). // // Counting what is in the buffers is the same for every building type, so it happens // here; what a cycle consumes and produces is not, so the owning content supplies those // per-cycle amounts. An item with no entry in the maps is shown without a denominator, // and a section holding nothing is not shown at all. class BufferSection : public QWidget { Q_OBJECT public: explicit BufferSection(const SelectionContext& context, QWidget* parent = nullptr); // perCycleInputs and perCycleOutputs map an item id to the amount one production // cycle consumes or produces. Both may be empty, for a building that runs no cycle. void setBuffers(const Building& building, const std::map& perCycleInputs, const std::map& perCycleOutputs); private: SectionBox* m_inputSection; ItemChipRow* m_inputChips; SectionBox* m_outputSection; ItemChipRow* m_outputChips; };