Fix: Industry accept/produce when not contiguous range from 0 (#14555)
This commit is contained in:
@@ -1767,17 +1767,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];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user