Changeset - r6786:2720ad535958
[Not reviewed]
master
0 1 0
bjarni - 17 years ago 2007-06-02 15:41:37
bjarni@openttd.org
(svn r10024) -Feature: [build windows] trains, road vehicles and ships can now be sorted by cargo capacity (planes already had this option)
1 file changed with 47 insertions and 2 deletions:
0 comments (0 inline, 0 general)
src/build_vehicle_gui.cpp
Show inline comments
 
@@ -237,12 +237,25 @@ static int CDECL TrainEngineNumberSorter
 
	const EngineID vb = *(const EngineID*)b;
 
	int r = ListPositionOfEngine(va) - ListPositionOfEngine(vb);
 

	
 
	return _internal_sort_order ? -r : r;
 
}
 

	
 
static int CDECL TrainEngineCapacitySorter(const void *a, const void *b)
 
{
 
	int va = RailVehInfo(*(const EngineID*)a)->capacity;
 
	int vb = RailVehInfo(*(const EngineID*)b)->capacity;
 
	int r = va - vb;
 

	
 
	if (r == 0) {
 
		/* Use EngineID to sort instead since we want consistent sorting */
 
		return EngineNumberSorter(a, b);
 
	}
 
	return _internal_sort_order ? -r : r;
 
}
 

	
 
static int CDECL TrainEnginesThenWagonsSorter(const void *a, const void *b)
 
{
 
	EngineID va = *(const EngineID*)a;
 
	EngineID vb = *(const EngineID*)b;
 
	int val_a = (RailVehInfo(va)->railveh_type == RAILVEH_WAGON ? 1 : 0);
 
	int val_b = (RailVehInfo(vb)->railveh_type == RAILVEH_WAGON ? 1 : 0);
 
@@ -251,12 +264,38 @@ static int CDECL TrainEnginesThenWagonsS
 
	/* Use EngineID to sort instead since we want consistent sorting */
 
	if (r == 0) return EngineNumberSorter(a, b);
 

	
 
	return _internal_sort_order ? -r : r;
 
}
 

	
 
static int CDECL RoadVehEngineCapacitySorter(const void *a, const void *b)
 
{
 
	int va = RoadVehInfo(*(const EngineID*)a)->capacity;
 
	int vb = RoadVehInfo(*(const EngineID*)b)->capacity;
 
	int r = va - vb;
 

	
 
	if (r == 0) {
 
		/* Use EngineID to sort instead since we want consistent sorting */
 
		return EngineNumberSorter(a, b);
 
	}
 
	return _internal_sort_order ? -r : r;
 
}
 

	
 
static int CDECL ShipEngineCapacitySorter(const void *a, const void *b)
 
{
 
	int va = ShipVehInfo(*(const EngineID*)a)->capacity;
 
	int vb = ShipVehInfo(*(const EngineID*)b)->capacity;
 
	int r = va - vb;
 

	
 
	if (r == 0) {
 
		/* Use EngineID to sort instead since we want consistent sorting */
 
		return EngineNumberSorter(a, b);
 
	}
 
	return _internal_sort_order ? -r : r;
 
}
 

	
 
/* Aircraft sorting functions */
 

	
 
static int CDECL AircraftEngineCostSorter(const void *a, const void *b)
 
{
 
	const int va = AircraftVehInfo(*(const EngineID*)a)->base_cost;
 
	const int vb = AircraftVehInfo(*(const EngineID*)b)->base_cost;
 
@@ -301,72 +340,78 @@ static int CDECL AircraftEngineCargoSort
 
		/* Use EngineID to sort instead since we want consistent sorting */
 
		return EngineNumberSorter(a, b);
 
	}
 
	return _internal_sort_order ? -r : r;
 
}
 

	
 
static EngList_SortTypeFunction * const _sorter[][9] = {{
 
static EngList_SortTypeFunction * const _sorter[][10] = {{
 
	/* Trains */
 
	&TrainEngineNumberSorter,
 
	&TrainEngineCostSorter,
 
	&TrainEngineSpeedSorter,
 
	&TrainEnginePowerSorter,
 
	&EngineIntroDateSorter,
 
	&EngineNameSorter,
 
	&TrainEngineRunningCostSorter,
 
	&TrainEnginePowerVsRunningCostSorter,
 
	&EngineReliabilitySorter,
 
	&TrainEngineCapacitySorter,
 
}, {
 
	/* Road vehicles */
 
	&EngineNumberSorter,
 
	&EngineIntroDateSorter,
 
	&EngineNameSorter,
 
	&EngineReliabilitySorter,
 
	&RoadVehEngineCapacitySorter,
 
}, {
 
	/* Ships */
 
	&EngineNumberSorter,
 
	&EngineIntroDateSorter,
 
	&EngineNameSorter,
 
	&EngineReliabilitySorter,
 
	&ShipEngineCapacitySorter,
 
}, {
 
	/* Aircraft */
 
	&EngineNumberSorter,
 
	&AircraftEngineCostSorter,
 
	&AircraftEngineSpeedSorter,
 
	&EngineIntroDateSorter,
 
	&EngineNameSorter,
 
	&AircraftEngineRunningCostSorter,
 
	&EngineReliabilitySorter,
 
	&AircraftEngineCargoSorter,
 
}};
 

	
 
static const StringID _sort_listing[][10] = {{
 
static const StringID _sort_listing[][11] = {{
 
	/* Trains */
 
	STR_ENGINE_SORT_ENGINE_ID,
 
	STR_ENGINE_SORT_COST,
 
	STR_SORT_BY_MAX_SPEED,
 
	STR_ENGINE_SORT_POWER,
 
	STR_ENGINE_SORT_INTRO_DATE,
 
	STR_SORT_BY_DROPDOWN_NAME,
 
	STR_ENGINE_SORT_RUNNING_COST,
 
	STR_ENGINE_SORT_POWER_VS_RUNNING_COST,
 
	STR_SORT_BY_RELIABILITY,
 
	STR_ENGINE_SORT_CARGO_CAPACITY,
 
	INVALID_STRING_ID
 
}, {
 
	/* Road vehicles */
 
	STR_ENGINE_SORT_ENGINE_ID,
 
	STR_ENGINE_SORT_INTRO_DATE,
 
	STR_SORT_BY_DROPDOWN_NAME,
 
	STR_SORT_BY_RELIABILITY,
 
	STR_ENGINE_SORT_CARGO_CAPACITY,
 
	INVALID_STRING_ID
 
}, {
 
	/* Ships */
 
	STR_ENGINE_SORT_ENGINE_ID,
 
	STR_ENGINE_SORT_INTRO_DATE,
 
	STR_SORT_BY_DROPDOWN_NAME,
 
	STR_SORT_BY_RELIABILITY,
 
	STR_ENGINE_SORT_CARGO_CAPACITY,
 
	INVALID_STRING_ID
 
}, {
 
	/* Aircraft */
 
	STR_ENGINE_SORT_ENGINE_ID,
 
	STR_ENGINE_SORT_COST,
 
	STR_SORT_BY_MAX_SPEED,
0 comments (0 inline, 0 general)