summaryrefslogtreecommitdiff
path: root/src/build_vehicle_gui.cpp
diff options
context:
space:
mode:
authormichi_cc <michi_cc@openttd.org>2011-12-13 01:18:40 +0000
committermichi_cc <michi_cc@openttd.org>2011-12-13 01:18:40 +0000
commit7f8162c324551e87cb2218bd0023fa7cfbe344b0 (patch)
treeeabfb6a3a3c17389f1b677c7fb3c004a3ac430b7 /src/build_vehicle_gui.cpp
parent2a776a6ca3ae911fe6f801684e12312b7ee7f998 (diff)
downloadopenttd-7f8162c324551e87cb2218bd0023fa7cfbe344b0.tar.xz
(svn r23508) -Add: Engine sorter for aircraft range.
Diffstat (limited to 'src/build_vehicle_gui.cpp')
-rw-r--r--src/build_vehicle_gui.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/build_vehicle_gui.cpp b/src/build_vehicle_gui.cpp
index 43b109030..886f38c93 100644
--- a/src/build_vehicle_gui.cpp
+++ b/src/build_vehicle_gui.cpp
@@ -403,6 +403,24 @@ static int CDECL AircraftEngineCargoSorter(const EngineID *a, const EngineID *b)
return _internal_sort_order ? -r : r;
}
+/**
+ * Determines order of aircraft by range.
+ * @param *a first engine to compare.
+ * @param *b second engine to compare.
+ * @return for descending order: returns < 0 if a < b and > 0 for a > b. Vice versa for ascending order and 0 for equal.
+ */
+static int CDECL AircraftRangeSorter(const EngineID *a, const EngineID *b)
+{
+ uint16 r_a = Engine::Get(*a)->GetRange();
+ uint16 r_b = Engine::Get(*b)->GetRange();
+
+ int r = r_a - r_b;
+
+ /* Use EngineID to sort instead since we want consistent sorting */
+ if (r == 0) return EngineNumberSorter(a, b);
+ return _internal_sort_order ? -r : r;
+}
+
static EngList_SortTypeFunction * const _sorter[][11] = {{
/* Trains */
&EngineNumberSorter,
@@ -449,6 +467,7 @@ static EngList_SortTypeFunction * const _sorter[][11] = {{
&EngineRunningCostSorter,
&EngineReliabilitySorter,
&AircraftEngineCargoSorter,
+ &AircraftRangeSorter,
}};
static const StringID _sort_listing[][12] = {{
@@ -500,6 +519,7 @@ static const StringID _sort_listing[][12] = {{
STR_SORT_BY_RUNNING_COST,
STR_SORT_BY_RELIABILITY,
STR_SORT_BY_CARGO_CAPACITY,
+ STR_SORT_BY_RANGE,
INVALID_STRING_ID
}};