remove duplicate findBuildingDef from BuildingSystem
BuildingSystem::findBuildingDef was a byte-equivalent re-implementation of BuildingsConfig::findBuildingDef. Same cleanup as the GameWorldView copy; this one sits in the sim layer, so it was missed by both earlier passes. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GH8ZMRY3vhxxXcaUxBqxkk
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user