Fix filtering by cargo type = none in vehicle list

This commit is contained in:
Jonathan G Rennison
2017-10-16 19:44:37 +01:00
parent b1613a24f0
commit d4de9de61d

View File

@@ -110,7 +110,16 @@ static const CargoID CF_NONE = CT_INVALID; ///< Show only vehicles which do not
/** Cargo filter functions */ /** Cargo filter functions */
static bool CDECL CargoFilter(const Vehicle * const *vid, const CargoID cid) static bool CDECL CargoFilter(const Vehicle * const *vid, const CargoID cid)
{ {
if (cid == CF_ANY) return true; if (cid == CF_ANY) {
return true;
} else if (cid == CF_NONE) {
for (const Vehicle *w = (*vid); w != NULL; w = w->Next()) {
if (w->cargo_cap > 0) {
return false;
}
}
return true;
} else {
for (const Vehicle *w = (*vid); w != NULL; w = w->Next()) { for (const Vehicle *w = (*vid); w != NULL; w = w->Next()) {
if (w->cargo_cap > 0 && w->cargo_type == cid) { if (w->cargo_cap > 0 && w->cargo_type == cid) {
return true; return true;
@@ -118,6 +127,7 @@ static bool CDECL CargoFilter(const Vehicle *const*vid, const CargoID cid)
} }
return false; return false;
} }
}
static GUIVehicleList::FilterFunction * const _filter_funcs[] = { static GUIVehicleList::FilterFunction * const _filter_funcs[] = {
&CargoFilter, &CargoFilter,