fix issue where building stats don't update while the building is kept selected

This commit is contained in:
2026-04-20 21:52:39 +02:00
parent df3ef46367
commit 507b5d1e3a
3 changed files with 24 additions and 0 deletions

View File

@@ -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()));

View File

@@ -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<EntityId>& ids)
{
m_singleId = kInvalidEntityId;

View File

@@ -5,8 +5,10 @@
#include <QWidget>
#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<EntityId>& 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<EntityId>& ids);
void refreshBuffers(const Building* b);
Simulation* m_sim;
const GameConfig* m_config;