summaryrefslogtreecommitdiff
path: root/src/station_gui.cpp
diff options
context:
space:
mode:
authorcelestar <celestar@openttd.org>2007-03-08 12:26:31 +0000
committercelestar <celestar@openttd.org>2007-03-08 12:26:31 +0000
commit0fd907e0ec9f1356c8a358b411080ded2c9f3362 (patch)
treeb8b7351a6320a461d79d37223a38313ed086c1e2 /src/station_gui.cpp
parentc89379f7ebbb6099f0132cccafb9e71b746cc673 (diff)
downloadopenttd-0fd907e0ec9f1356c8a358b411080ded2c9f3362.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
Diffstat (limited to 'src/station_gui.cpp')
-rw-r--r--src/station_gui.cpp12
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;