mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-10 00:11:31 +00:00
(svn r21105) -Feature-ish: Allow to sort purchase lists for trains and road vehicles by tractive effort
This commit is contained in:
parent
2364ac83a0
commit
1ee62de0a3
@ -231,6 +231,23 @@ static int CDECL EnginePowerSorter(const EngineID *a, const EngineID *b)
|
|||||||
return _internal_sort_order ? -r : r;
|
return _internal_sort_order ? -r : r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines order of engines by tractive effort
|
||||||
|
* @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 EngineTractiveEffortSorter(const EngineID *a, const EngineID *b)
|
||||||
|
{
|
||||||
|
int va = Engine::Get(*a)->GetDisplayMaxTractiveEffort();
|
||||||
|
int vb = Engine::Get(*b)->GetDisplayMaxTractiveEffort();
|
||||||
|
int r = va - vb;
|
||||||
|
|
||||||
|
/* Use EngineID to sort instead since we want consistent sorting */
|
||||||
|
if (r == 0) return EngineNumberSorter(a, b);
|
||||||
|
return _internal_sort_order ? -r : r;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines order of engines by running costs
|
* Determines order of engines by running costs
|
||||||
* @param *a first engine to compare
|
* @param *a first engine to compare
|
||||||
@ -384,12 +401,13 @@ static int CDECL AircraftEngineCargoSorter(const EngineID *a, const EngineID *b)
|
|||||||
return _internal_sort_order ? -r : r;
|
return _internal_sort_order ? -r : r;
|
||||||
}
|
}
|
||||||
|
|
||||||
static EngList_SortTypeFunction * const _sorter[][10] = {{
|
static EngList_SortTypeFunction * const _sorter[][11] = {{
|
||||||
/* Trains */
|
/* Trains */
|
||||||
&EngineNumberSorter,
|
&EngineNumberSorter,
|
||||||
&EngineCostSorter,
|
&EngineCostSorter,
|
||||||
&EngineSpeedSorter,
|
&EngineSpeedSorter,
|
||||||
&EnginePowerSorter,
|
&EnginePowerSorter,
|
||||||
|
&EngineTractiveEffortSorter,
|
||||||
&EngineIntroDateSorter,
|
&EngineIntroDateSorter,
|
||||||
&EngineNameSorter,
|
&EngineNameSorter,
|
||||||
&EngineRunningCostSorter,
|
&EngineRunningCostSorter,
|
||||||
@ -402,6 +420,7 @@ static EngList_SortTypeFunction * const _sorter[][10] = {{
|
|||||||
&EngineCostSorter,
|
&EngineCostSorter,
|
||||||
&EngineSpeedSorter,
|
&EngineSpeedSorter,
|
||||||
&EnginePowerSorter,
|
&EnginePowerSorter,
|
||||||
|
&EngineTractiveEffortSorter,
|
||||||
&EngineIntroDateSorter,
|
&EngineIntroDateSorter,
|
||||||
&EngineNameSorter,
|
&EngineNameSorter,
|
||||||
&EngineRunningCostSorter,
|
&EngineRunningCostSorter,
|
||||||
@ -430,12 +449,13 @@ static EngList_SortTypeFunction * const _sorter[][10] = {{
|
|||||||
&AircraftEngineCargoSorter,
|
&AircraftEngineCargoSorter,
|
||||||
}};
|
}};
|
||||||
|
|
||||||
static const StringID _sort_listing[][11] = {{
|
static const StringID _sort_listing[][12] = {{
|
||||||
/* Trains */
|
/* Trains */
|
||||||
STR_SORT_BY_ENGINE_ID,
|
STR_SORT_BY_ENGINE_ID,
|
||||||
STR_SORT_BY_COST,
|
STR_SORT_BY_COST,
|
||||||
STR_SORT_BY_MAX_SPEED,
|
STR_SORT_BY_MAX_SPEED,
|
||||||
STR_SORT_BY_POWER,
|
STR_SORT_BY_POWER,
|
||||||
|
STR_SORT_BY_TRACTIVE_EFFORT,
|
||||||
STR_SORT_BY_INTRO_DATE,
|
STR_SORT_BY_INTRO_DATE,
|
||||||
STR_SORT_BY_NAME,
|
STR_SORT_BY_NAME,
|
||||||
STR_SORT_BY_RUNNING_COST,
|
STR_SORT_BY_RUNNING_COST,
|
||||||
@ -449,6 +469,7 @@ static const StringID _sort_listing[][11] = {{
|
|||||||
STR_SORT_BY_COST,
|
STR_SORT_BY_COST,
|
||||||
STR_SORT_BY_MAX_SPEED,
|
STR_SORT_BY_MAX_SPEED,
|
||||||
STR_SORT_BY_POWER,
|
STR_SORT_BY_POWER,
|
||||||
|
STR_SORT_BY_TRACTIVE_EFFORT,
|
||||||
STR_SORT_BY_INTRO_DATE,
|
STR_SORT_BY_INTRO_DATE,
|
||||||
STR_SORT_BY_NAME,
|
STR_SORT_BY_NAME,
|
||||||
STR_SORT_BY_RUNNING_COST,
|
STR_SORT_BY_RUNNING_COST,
|
||||||
@ -1155,11 +1176,17 @@ struct BuildVehicleWindow : Window {
|
|||||||
|
|
||||||
case BUILD_VEHICLE_WIDGET_SORT_DROPDOWN: { // Select sorting criteria dropdown menu
|
case BUILD_VEHICLE_WIDGET_SORT_DROPDOWN: { // Select sorting criteria dropdown menu
|
||||||
uint32 hidden_mask = 0;
|
uint32 hidden_mask = 0;
|
||||||
/* Disable sorting by power when the original acceleration model for road vehicles is being used. */
|
/* Disable sorting by power or tractive effort when the original acceleration model for road vehicles is being used. */
|
||||||
if (this->vehicle_type == VEH_ROAD &&
|
if (this->vehicle_type == VEH_ROAD &&
|
||||||
_settings_game.vehicle.roadveh_acceleration_model == AM_ORIGINAL) {
|
_settings_game.vehicle.roadveh_acceleration_model == AM_ORIGINAL) {
|
||||||
SetBit(hidden_mask, 3);
|
SetBit(hidden_mask, 3); // power
|
||||||
SetBit(hidden_mask, 7);
|
SetBit(hidden_mask, 4); // tractive effort
|
||||||
|
SetBit(hidden_mask, 8); // power by running costs
|
||||||
|
}
|
||||||
|
/* Disable sorting by tractive effort when the original acceleration model for trains is being used. */
|
||||||
|
if (this->vehicle_type == VEH_TRAIN &&
|
||||||
|
_settings_game.vehicle.train_acceleration_model == AM_ORIGINAL) {
|
||||||
|
SetBit(hidden_mask, 4); // tractive effort
|
||||||
}
|
}
|
||||||
ShowDropDownMenu(this, _sort_listing[this->vehicle_type], this->sort_criteria, BUILD_VEHICLE_WIDGET_SORT_DROPDOWN, 0, hidden_mask);
|
ShowDropDownMenu(this, _sort_listing[this->vehicle_type], this->sort_criteria, BUILD_VEHICLE_WIDGET_SORT_DROPDOWN, 0, hidden_mask);
|
||||||
break;
|
break;
|
||||||
|
@ -285,6 +285,7 @@ STR_SORT_BY_RATING_MIN :Lowest cargo ra
|
|||||||
STR_SORT_BY_ENGINE_ID :EngineID (classic sort)
|
STR_SORT_BY_ENGINE_ID :EngineID (classic sort)
|
||||||
STR_SORT_BY_COST :Cost
|
STR_SORT_BY_COST :Cost
|
||||||
STR_SORT_BY_POWER :Power
|
STR_SORT_BY_POWER :Power
|
||||||
|
STR_SORT_BY_TRACTIVE_EFFORT :Tractive effort
|
||||||
STR_SORT_BY_INTRO_DATE :Introduction Date
|
STR_SORT_BY_INTRO_DATE :Introduction Date
|
||||||
STR_SORT_BY_RUNNING_COST :Running Cost
|
STR_SORT_BY_RUNNING_COST :Running Cost
|
||||||
STR_SORT_BY_POWER_VS_RUNNING_COST :Power/Running Cost
|
STR_SORT_BY_POWER_VS_RUNNING_COST :Power/Running Cost
|
||||||
|
Loading…
Reference in New Issue
Block a user