diff --git a/src/industry_gui.cpp b/src/industry_gui.cpp index 0b0693e8e4..e32a8dc2d9 100644 --- a/src/industry_gui.cpp +++ b/src/industry_gui.cpp @@ -880,8 +880,15 @@ public: const int label_indent = WidgetDimensions::scaled.hsep_normal + this->cargo_icon_size.width; bool stockpiling = HasBit(ind->callback_mask, CBM_IND_PRODUCTION_CARGO_ARRIVAL) || HasBit(ind->callback_mask, CBM_IND_PRODUCTION_256_TICKS); - for (const auto &a : i->accepted) { - if (!IsValidCargoID(a.cargo)) continue; + /* Use map to sort industry's accepted cargo list. */ + std::map sorted_accepted; + for (auto it = std::begin(i->accepted); it != std::end(i->accepted); ++it) { + if (!IsValidCargoID(it->cargo)) continue; + sorted_accepted.emplace(it->cargo, *it); + } + + for (const auto &pair : sorted_accepted) { + const auto &a = pair.second; has_accept = true; if (first) { DrawString(ir, STR_INDUSTRY_VIEW_REQUIRES); @@ -925,8 +932,16 @@ public: int text_y_offset = (line_height - GetCharacterHeight(FS_NORMAL)) / 2; int button_y_offset = (line_height - SETTING_BUTTON_HEIGHT) / 2; first = true; - for (const auto &p : i->produced) { - if (!IsValidCargoID(p.cargo)) continue; + + /* Use map to sort industry's produced cargo list. */ + std::map sorted_produced; + for (auto it = std::begin(i->produced); it != std::end(i->produced); ++it) { + if (!IsValidCargoID(it->cargo)) continue; + sorted_produced.emplace(it->cargo, *it); + } + + for (const auto &pair : sorted_produced) { + const auto &p = pair.second; if (first) { if (has_accept) ir.top += WidgetDimensions::scaled.vsep_wide; DrawString(ir, TimerGameEconomy::UsingWallclockUnits() ? STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE : STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE);