Codechange: Use comparator struct to sort cargo ID by predefined sort order.

This allows reuse of the comparator where a typename is used instead.
pull/615/head
Peter Nelson 8 months ago committed by Peter Nelson
parent bc8e26f4e7
commit e4f94747f3

@ -204,4 +204,9 @@ static inline bool IsCargoInClass(CargoID c, CargoClass cc)
using SetCargoBitIterator = SetBitIterator<CargoID, CargoTypes>;
/** Comparator to sort CargoID by according to desired order. */
struct CargoIDComparator {
bool operator() (const CargoID &lhs, const CargoID &rhs) const { return _sorted_cargo_types[lhs] < _sorted_cargo_types[rhs]; }
};
#endif /* CARGOTYPE_H */

@ -1920,11 +1920,6 @@ enum CargoesFieldType {
static const uint MAX_CARGOES = 16; ///< Maximum number of cargoes carried in a #CFT_CARGO field in #CargoesField.
static bool CargoIDSorter(const CargoID &a, const CargoID &b)
{
return _sorted_cargo_types[a] < _sorted_cargo_types[b];
}
/** Data about a single field in the #IndustryCargoesWindow panel. */
struct CargoesField {
static int vert_inter_industry_space;
@ -2054,7 +2049,8 @@ struct CargoesField {
}
}
this->u.cargo.num_cargoes = (count < 0) ? static_cast<uint8_t>(insert - std::begin(this->u.cargo.vertical_cargoes)) : count;
std::sort(std::begin(this->u.cargo.vertical_cargoes), insert, &CargoIDSorter);
CargoIDComparator comparator;
std::sort(std::begin(this->u.cargo.vertical_cargoes), insert, comparator);
std::fill(insert, std::end(this->u.cargo.vertical_cargoes), CT_INVALID);
this->u.cargo.top_end = top_end;
this->u.cargo.bottom_end = bottom_end;

Loading…
Cancel
Save