Fix Salvage Bay drop-off not working by adding config-driven buffer capacity

This commit is contained in:
2026-07-09 20:11:12 +02:00
parent cc38bf95fa
commit 2ddf13238c
9 changed files with 83 additions and 2 deletions

View File

@@ -154,6 +154,16 @@ void BuildingSystem::initShipyardBuffers(Building& b) const
}
}
void BuildingSystem::initSalvageBayBuffer(Building& b) const
{
// Salvage Bay has no recipe-driven buffer; its output-buffer holding size for
// ship drop-off is config-defined (REQ-BLD-SALVAGE-BAY).
b.outputBuffer.items.clear();
const BuildingDef* def = findBuildingDef(BuildingType::SalvageBay);
b.outputBuffer.capacity =
(def && def->outputBufferCapacity) ? *def->outputBufferCapacity : 0;
}
std::vector<Port> BuildingSystem::computeInputPorts(const Building& b) const
{
// Build lookup sets for quick membership checks.
@@ -577,7 +587,11 @@ void BuildingSystem::tickConstruction(Tick currentTick)
}
building.inputPorts = computeInputPorts(building);
if (!building.recipeId.empty())
if (building.type == BuildingType::SalvageBay)
{
initSalvageBayBuffer(building);
}
else if (!building.recipeId.empty())
{
if (building.type == BuildingType::Shipyard)
{
@@ -1238,6 +1252,11 @@ BuildingId BuildingSystem::placeImmediate(BuildingType type,
}
building.inputPorts = computeInputPorts(building);
if (type == BuildingType::SalvageBay)
{
initSalvageBayBuffer(building);
}
m_buildings.push_back(std::move(building));
return id;
}