diff --git a/src/ui/MainWindow.cpp b/src/ui/MainWindow.cpp index 2f4e73a..c076be0 100644 --- a/src/ui/MainWindow.cpp +++ b/src/ui/MainWindow.cpp @@ -45,6 +45,9 @@ MainWindow::MainWindow(Simulation* sim, const GameConfig* config, connect(m_gameWorldView, SIGNAL(stateUpdated(Tick, int, double)), this, SLOT(onStateUpdated(Tick, int, double))); // for affordability + connect(m_gameWorldView, SIGNAL(stateUpdated(Tick, int, double)), + m_selectedBuildingPanel, SLOT(onStateUpdated(Tick, int, double))); + connect(m_gameWorldView, SIGNAL(gameOver()), this, SLOT(onGameOver())); diff --git a/src/ui/SelectedBuildingPanel.cpp b/src/ui/SelectedBuildingPanel.cpp index 89c27e4..240bacf 100644 --- a/src/ui/SelectedBuildingPanel.cpp +++ b/src/ui/SelectedBuildingPanel.cpp @@ -188,6 +188,11 @@ void SelectedBuildingPanel::buildSingle(EntityId id) m_clearBeltBtn->hide(); } + refreshBuffers(b); +} + +void SelectedBuildingPanel::refreshBuffers(const Building* b) +{ QString bufText; if (!b->inputBuffer.counts.empty()) { @@ -221,6 +226,18 @@ void SelectedBuildingPanel::buildSingle(EntityId id) m_buffersLabel->setText(bufText); } +void SelectedBuildingPanel::onStateUpdated(Tick /*tick*/, int /*blocks*/, double /*speed*/) +{ + if (m_singleId == kInvalidEntityId) { return; } + const Building* b = m_sim->buildings().findBuilding(m_singleId); + if (!b) + { + buildEmpty(); + return; + } + refreshBuffers(b); +} + void SelectedBuildingPanel::buildMulti(const std::vector& ids) { m_singleId = kInvalidEntityId; diff --git a/src/ui/SelectedBuildingPanel.h b/src/ui/SelectedBuildingPanel.h index adc9fc0..ce1c7fe 100644 --- a/src/ui/SelectedBuildingPanel.h +++ b/src/ui/SelectedBuildingPanel.h @@ -5,8 +5,10 @@ #include +#include "Building.h" #include "EntityId.h" #include "GameConfig.h" +#include "Tick.h" class Simulation; class QLabel; @@ -24,6 +26,7 @@ public: public slots: void onSelectionChanged(const std::vector& ids); + void onStateUpdated(Tick tick, int blocks, double speed); private slots: void onRecipeChanged(int comboIndex); @@ -35,6 +38,7 @@ private: void buildEmpty(); void buildSingle(EntityId id); void buildMulti(const std::vector& ids); + void refreshBuffers(const Building* b); Simulation* m_sim; const GameConfig* m_config;