remove duplicate findBuildingDef from BuildingSystem

This commit is contained in:
2026-08-03 21:14:13 +02:00
parent 7017f8b4dc
commit 785ce3ebfe
2 changed files with 13 additions and 25 deletions

View File

@@ -95,18 +95,6 @@ BuildingSystem::BuildingSystem(const GameConfig& config,
// Private helpers // Private helpers
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
const BuildingDef* BuildingSystem::findBuildingDef(BuildingType type) const
{
for (const BuildingDef& def : m_config.buildings.buildings)
{
if (def.type == type)
{
return &def;
}
}
return nullptr;
}
void BuildingSystem::initBuffers(Building& b, const RecipeDef& recipe) const void BuildingSystem::initBuffers(Building& b, const RecipeDef& recipe) const
{ {
b.inputBuffer.counts.clear(); b.inputBuffer.counts.clear();
@@ -235,7 +223,7 @@ void BuildingSystem::initSalvageBayBuffer(Building& b) const
// Salvage Bay has no recipe-driven buffer; its output-buffer holding size for // Salvage Bay has no recipe-driven buffer; its output-buffer holding size for
// ship drop-off is config-defined (REQ-BLD-SALVAGE-BAY). // ship drop-off is config-defined (REQ-BLD-SALVAGE-BAY).
b.outputBuffer.items.clear(); b.outputBuffer.items.clear();
const BuildingDef* def = findBuildingDef(BuildingType::SalvageBay); const BuildingDef* def = m_config.buildings.findBuildingDef(BuildingType::SalvageBay);
b.outputBuffer.capacity = b.outputBuffer.capacity =
(def && def->outputBufferCapacity) ? *def->outputBufferCapacity : 0; (def && def->outputBufferCapacity) ? *def->outputBufferCapacity : 0;
} }
@@ -308,7 +296,7 @@ std::vector<Port> BuildingSystem::getInputPorts(BuildingId id) const
{ {
// A site stores no ports; derive its output ports from the mask (absolute) // A site stores no ports; derive its output ports from the mask (absolute)
// and run the same input-edge scan (REQ-BLD-BELT-DRAG, REQ-MAT-INPUT-PORTS). // and run the same input-edge scan (REQ-BLD-BELT-DRAG, REQ-MAT-INPUT-PORTS).
const BuildingDef* def = findBuildingDef(site->type); const BuildingDef* def = m_config.buildings.findBuildingDef(site->type);
if (def == nullptr) { return {}; } if (def == nullptr) { return {}; }
const ParsedSurfaceMask mask = parseSurfaceMask(def->surfaceMask, site->rotation); const ParsedSurfaceMask mask = parseSurfaceMask(def->surfaceMask, site->rotation);
std::vector<Port> outputPortsAbsolute; std::vector<Port> outputPortsAbsolute;
@@ -354,7 +342,7 @@ std::vector<Item> BuildingSystem::rollReprocessingOutput(const RecipeDef& recipe
std::optional<BuildingId> BuildingSystem::place(BuildingType type, QPoint anchor, std::optional<BuildingId> BuildingSystem::place(BuildingType type, QPoint anchor,
Rotation rotation, Tick currentTick) Rotation rotation, Tick currentTick)
{ {
const BuildingDef* def = findBuildingDef(type); const BuildingDef* def = m_config.buildings.findBuildingDef(type);
assert(def != nullptr); assert(def != nullptr);
const ParsedSurfaceMask mask = parseSurfaceMask(def->surfaceMask, rotation); const ParsedSurfaceMask mask = parseSurfaceMask(def->surfaceMask, rotation);
@@ -418,7 +406,7 @@ bool BuildingSystem::bodyCellsWithinWorldBounds(const std::vector<QPoint>& bodyC
bool BuildingSystem::isPlacementValid(BuildingType type, QPoint anchor, bool BuildingSystem::isPlacementValid(BuildingType type, QPoint anchor,
Rotation rotation) const Rotation rotation) const
{ {
const BuildingDef* def = findBuildingDef(type); const BuildingDef* def = m_config.buildings.findBuildingDef(type);
if (def == nullptr) if (def == nullptr)
{ {
return false; return false;
@@ -473,7 +461,7 @@ int BuildingSystem::deconstruct(BuildingId id, Tick currentTick)
{ {
if (it->id == id) if (it->id == id)
{ {
const BuildingDef* def = findBuildingDef(it->type); const BuildingDef* def = m_config.buildings.findBuildingDef(it->type);
for (const QPoint& cell : it->bodyCells) for (const QPoint& cell : it->bodyCells)
{ {
m_tileOccupancy.erase({cell.x(), cell.y()}); m_tileOccupancy.erase({cell.x(), cell.y()});
@@ -664,7 +652,7 @@ BuildingSystem::getSiteSplitterInfo(BuildingId id) const
if (site.id != id) { continue; } if (site.id != id) { continue; }
if (site.type != BuildingType::Splitter) { return std::nullopt; } if (site.type != BuildingType::Splitter) { return std::nullopt; }
const BuildingDef* def = findBuildingDef(site.type); const BuildingDef* def = m_config.buildings.findBuildingDef(site.type);
const ParsedSurfaceMask mask = parseSurfaceMask( const ParsedSurfaceMask mask = parseSurfaceMask(
def ? def->surfaceMask : std::vector<std::string>{}, site.rotation); def ? def->surfaceMask : std::vector<std::string>{}, site.rotation);
if (mask.outputPorts.size() < 2) { return std::nullopt; } if (mask.outputPorts.size() < 2) { return std::nullopt; }
@@ -711,7 +699,7 @@ void BuildingSystem::tickConstruction(Tick currentTick)
// Guard: if somehow the front site was never started, start it now. // Guard: if somehow the front site was never started, start it now.
if (front.completesAt == 0) if (front.completesAt == 0)
{ {
const BuildingDef* def = findBuildingDef(front.type); const BuildingDef* def = m_config.buildings.findBuildingDef(front.type);
if (def) if (def)
{ {
front.completesAt = currentTick + secondsToTicks(def->constructionTimeSeconds); front.completesAt = currentTick + secondsToTicks(def->constructionTimeSeconds);
@@ -725,7 +713,7 @@ void BuildingSystem::tickConstruction(Tick currentTick)
} }
// Promote construction site to an operational Building. // Promote construction site to an operational Building.
const BuildingDef* def = findBuildingDef(front.type); const BuildingDef* def = m_config.buildings.findBuildingDef(front.type);
const ParsedSurfaceMask mask = parseSurfaceMask( const ParsedSurfaceMask mask = parseSurfaceMask(
def ? def->surfaceMask : std::vector<std::string>{}, def ? def->surfaceMask : std::vector<std::string>{},
front.rotation); front.rotation);
@@ -791,7 +779,8 @@ void BuildingSystem::tickConstruction(Tick currentTick)
// Start next queued site if present. // Start next queued site if present.
if (!m_constructionQueue.empty() && m_constructionQueue.front().completesAt == 0) if (!m_constructionQueue.empty() && m_constructionQueue.front().completesAt == 0)
{ {
const BuildingDef* nextDef = findBuildingDef(m_constructionQueue.front().type); const BuildingDef* nextDef =
m_config.buildings.findBuildingDef(m_constructionQueue.front().type);
if (nextDef) if (nextDef)
{ {
m_constructionQueue.front().completesAt = m_constructionQueue.front().completesAt =
@@ -859,7 +848,7 @@ void BuildingSystem::tickDeconstruction(Tick currentTick)
{ {
if (it->id != front.id) { continue; } if (it->id != front.id) { continue; }
const BuildingDef* def = findBuildingDef(it->type); const BuildingDef* def = m_config.buildings.findBuildingDef(it->type);
for (const QPoint& cell : it->bodyCells) for (const QPoint& cell : it->bodyCells)
{ {
m_tileOccupancy.erase({cell.x(), cell.y()}); m_tileOccupancy.erase({cell.x(), cell.y()});
@@ -1601,7 +1590,7 @@ std::optional<BuildingId> BuildingSystem::findRotateInPlaceTarget(
return std::nullopt; return std::nullopt;
} }
const BuildingDef* def = findBuildingDef(type); const BuildingDef* def = m_config.buildings.findBuildingDef(type);
if (!def) { return std::nullopt; } if (!def) { return std::nullopt; }
const ParsedSurfaceMask mask = parseSurfaceMask(def->surfaceMask, rot); const ParsedSurfaceMask mask = parseSurfaceMask(def->surfaceMask, rot);
@@ -1661,7 +1650,7 @@ void BuildingSystem::rotateInPlace(BuildingId id, Rotation newRotation)
b.rotation = newRotation; b.rotation = newRotation;
const BuildingDef* def = findBuildingDef(b.type); const BuildingDef* def = m_config.buildings.findBuildingDef(b.type);
if (!def) { return; } if (!def) { return; }
const ParsedSurfaceMask mask = parseSurfaceMask(def->surfaceMask, newRotation); const ParsedSurfaceMask mask = parseSurfaceMask(def->surfaceMask, newRotation);

View File

@@ -267,7 +267,6 @@ private:
// the status light (REQ-UI-STATUS-LIGHT). // the status light (REQ-UI-STATUS-LIGHT).
bool hasInputsToStart(const Building& b) const; bool hasInputsToStart(const Building& b) const;
const BuildingDef* findBuildingDef(BuildingType type) const;
void initBuffers(Building& b, const RecipeDef& recipe) const; void initBuffers(Building& b, const RecipeDef& recipe) const;
// Buffers for an auto-recipe building (Smelter, Reprocessing Plant): input // Buffers for an auto-recipe building (Smelter, Reprocessing Plant): input
// caps span the union of every recipe of the building's type; no player // caps span the union of every recipe of the building's type; no player