1
0
mirror of https://github.com/OpenTTD/OpenTTD synced 2026-01-15 16:32:41 +01:00

Fix: Industry accept/produce when not contiguous range from 0 (#14555)

This commit is contained in:
Jonathan G Rennison
2025-09-27 18:12:49 +01:00
committed by GitHub
parent 9307e1929e
commit f64e1cdae0

View File

@@ -1761,17 +1761,25 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, IndustryType type,
auto &industries = Industry::industries[type];
industries.insert(i->index);
size_t produced_count = 0;
for (size_t index = 0; index < std::size(indspec->produced_cargo); ++index) {
if (!IsValidCargoType(indspec->produced_cargo[index])) break;
if (IsValidCargoType(indspec->produced_cargo[index])) {
produced_count = index + 1;
}
}
for (size_t index = 0; index < produced_count; ++index) {
Industry::ProducedCargo &p = i->produced.emplace_back();
p.cargo = indspec->produced_cargo[index];
p.rate = indspec->production_rate[index];
}
size_t accepted_count = 0;
for (size_t index = 0; index < std::size(indspec->accepts_cargo); ++index) {
if (!IsValidCargoType(indspec->accepts_cargo[index])) break;
if (IsValidCargoType(indspec->accepts_cargo[index])) {
accepted_count = index + 1;
}
}
for (size_t index = 0; index < accepted_count; ++index) {
Industry::AcceptedCargo &a = i->accepted.emplace_back();
a.cargo = indspec->accepts_cargo[index];
}