diff options
author | celestar <celestar@openttd.org> | 2007-03-08 12:26:31 +0000 |
---|---|---|
committer | celestar <celestar@openttd.org> | 2007-03-08 12:26:31 +0000 |
commit | 5191183f22e2550cc4532e94d93c7892f284f5ef (patch) | |
tree | b8b7351a6320a461d79d37223a38313ed086c1e2 | |
parent | 283fca3ee7023311ae272a499ef03d9c4214f6c6 (diff) | |
download | openttd-5191183f22e2550cc4532e94d93c7892f284f5ef.tar.xz |
(svn r9062) -Fix (r4822, FS#595): The station list, sorted by cargo rating, now takes stations into account that have no cargo waiting (KeeperOfTheSoul). While at it, doxygen the function
-rw-r--r-- | src/station_gui.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/station_gui.cpp b/src/station_gui.cpp index 38e99f718..059ecaf22 100644 --- a/src/station_gui.cpp +++ b/src/station_gui.cpp @@ -138,6 +138,14 @@ static int CDECL StationWaitingSorter(const void *a, const void *b) return (_internal_sort_order & 1) ? sum2 - sum1 : sum1 - sum2; } +/** + * qsort-compatible version of sorting two stations by maximum rating + * @param a First object to be sorted, must be of type (const Station *) + * @param b Second object to be sorted, must be of type (const Station *) + * @return The sort order + * @retval >0 a should come before b in the list + * @retval <0 b should come before a in the list + */ static int CDECL StationRatingMaxSorter(const void *a, const void *b) { const Station* st1 = *(const Station**)a; @@ -146,8 +154,8 @@ static int CDECL StationRatingMaxSorter(const void *a, const void *b) byte maxr2 = 0; for (CargoID j = 0; j < NUM_CARGO; j++) { - if (st1->goods[j].waiting_acceptance & 0xfff) maxr1 = max(maxr1, st1->goods[j].rating); - if (st2->goods[j].waiting_acceptance & 0xfff) maxr2 = max(maxr2, st2->goods[j].rating); + if (st1->goods[j].enroute_from != INVALID_STATION) maxr1 = max(maxr1, st1->goods[j].rating); + if (st2->goods[j].enroute_from != INVALID_STATION) maxr2 = max(maxr2, st2->goods[j].rating); } return (_internal_sort_order & 1) ? maxr2 - maxr1 : maxr1 - maxr2; |