migrate every factory query off BuildingSystem onto the free functions

This commit is contained in:
2026-08-05 06:45:49 +02:00
parent 1fb63cce4e
commit 58b94223f7
20 changed files with 212 additions and 244 deletions

View File

@@ -1,4 +1,5 @@
#include "SelectedBuildingPanel.h"
#include "FactoryQueries.h"
#include <algorithm>
#include <cctype>
@@ -234,8 +235,8 @@ void SelectedBuildingPanel::buildSingle(BuildingId id)
m_singleBuildingId = id;
hideAllWidgets();
const Building* b = m_sim->getBuildings().findBuilding(id);
const ConstructionSite* s = b ? nullptr : m_sim->getBuildings().findSite(id);
const Building* b = findBuilding(m_sim->getFactoryState(), id);
const ConstructionSite* s = b ? nullptr : findSite(m_sim->getFactoryState(), id);
if (!b && !s)
{
buildEmpty();
@@ -602,7 +603,7 @@ void SelectedBuildingPanel::refreshSelectionDisplay(RefreshReason reason)
// category owns the panel there is none: yieldToFieldSelection() has cleared it, so
// this returns immediately and the field panel refreshes itself off the same events.
if (!m_singleBuildingId.has_value()) { return; }
const Building* b = m_sim->getBuildings().findBuilding(*m_singleBuildingId);
const Building* b = findBuilding(m_sim->getFactoryState(), *m_singleBuildingId);
if (b)
{
if (m_titleLabel->text().startsWith(tr("(Building) ")))
@@ -615,7 +616,7 @@ void SelectedBuildingPanel::refreshSelectionDisplay(RefreshReason reason)
}
return;
}
const ConstructionSite* s = m_sim->getBuildings().findSite(*m_singleBuildingId);
const ConstructionSite* s = findSite(m_sim->getFactoryState(), *m_singleBuildingId);
if (s)
{
// A periodic tick only advances construction progress, so update just the
@@ -649,13 +650,13 @@ void SelectedBuildingPanel::buildMulti(const std::vector<BuildingId>& ids)
std::map<BuildingType, int> counts;
for (BuildingId id : ids)
{
const Building* b = m_sim->getBuildings().findBuilding(id);
const Building* b = findBuilding(m_sim->getFactoryState(), id);
if (b)
{
counts[b->type]++;
continue;
}
const ConstructionSite* s = m_sim->getBuildings().findSite(id);
const ConstructionSite* s = findSite(m_sim->getFactoryState(), id);
if (s)
{
counts[s->type]++;
@@ -817,7 +818,7 @@ void SelectedBuildingPanel::onClearBelt()
std::vector<QPoint> tiles;
for (BuildingId id : m_selectedBuildingIds)
{
const Building* b = m_sim->getBuildings().findBuilding(id);
const Building* b = findBuilding(m_sim->getFactoryState(), id);
if (b && isBeltSubsystemType(b->type))
{
for (const QPoint& cell : b->bodyCells)