(svn r19348) -Add: Allow to sort road vehicles by power and by power vs running cost at the engine preview window.

This commit is contained in:
terkhen 2010-03-06 13:03:17 +00:00
parent be3b839ded
commit 3ed1442e05
2 changed files with 26 additions and 7 deletions

View File

@ -203,8 +203,7 @@ static int CDECL EngineRunningCostSorter(const EngineID *a, const EngineID *b)
return _internal_sort_order ? -r : r;
}
/* Train sorting functions */
static int CDECL TrainEnginePowerVsRunningCostSorter(const EngineID *a, const EngineID *b)
static int CDECL EnginePowerVsRunningCostSorter(const EngineID *a, const EngineID *b)
{
const Engine *e_a = Engine::Get(*a);
const Engine *e_b = Engine::Get(*b);
@ -224,6 +223,8 @@ static int CDECL TrainEnginePowerVsRunningCostSorter(const EngineID *a, const En
return _internal_sort_order ? -r : r;
}
/* Train sorting functions */
static int CDECL TrainEngineCapacitySorter(const EngineID *a, const EngineID *b)
{
const RailVehicleInfo *rvi_a = RailVehInfo(*a);
@ -308,7 +309,7 @@ static EngList_SortTypeFunction * const _sorter[][10] = {{
&EngineIntroDateSorter,
&EngineNameSorter,
&EngineRunningCostSorter,
&TrainEnginePowerVsRunningCostSorter,
&EnginePowerVsRunningCostSorter,
&EngineReliabilitySorter,
&TrainEngineCapacitySorter,
}, {
@ -321,6 +322,8 @@ static EngList_SortTypeFunction * const _sorter[][10] = {{
&EngineRunningCostSorter,
&EngineReliabilitySorter,
&RoadVehEngineCapacitySorter,
&EnginePowerSorter,
&EnginePowerVsRunningCostSorter,
}, {
/* Ships */
&EngineNumberSorter,
@ -366,6 +369,8 @@ static const StringID _sort_listing[][11] = {{
STR_SORT_BY_RUNNING_COST,
STR_SORT_BY_RELIABILITY,
STR_SORT_BY_CARGO_CAPACITY,
STR_SORT_BY_POWER,
STR_SORT_BY_POWER_VS_RUNNING_COST,
INVALID_STRING_ID
}, {
/* Ships */
@ -1047,9 +1052,16 @@ struct BuildVehicleWindow : Window {
break;
}
case BUILD_VEHICLE_WIDGET_SORT_DROPDOWN: // Select sorting criteria dropdown menu
ShowDropDownMenu(this, _sort_listing[this->vehicle_type], this->sort_criteria, BUILD_VEHICLE_WIDGET_SORT_DROPDOWN, 0, 0);
break;
case BUILD_VEHICLE_WIDGET_SORT_DROPDOWN: { // Select sorting criteria dropdown menu
uint32 hidden_mask = 0;
/* Disable sorting by power when the original acceleration model for road vehicles is being used. */
if (this->vehicle_type == VEH_ROAD &&
_settings_game.vehicle.roadveh_acceleration_model == AM_ORIGINAL) {
SetBit(hidden_mask, 8);
SetBit(hidden_mask, 9);
}
ShowDropDownMenu(this, _sort_listing[this->vehicle_type], this->sort_criteria, BUILD_VEHICLE_WIDGET_SORT_DROPDOWN, 0, hidden_mask);
} break;
case BUILD_VEHICLE_WIDGET_CARGO_FILTER_DROPDOWN: // Select cargo filtering criteria dropdown menu
ShowDropDownMenu(this, this->cargo_filter_texts, this->cargo_filter_criteria, BUILD_VEHICLE_WIDGET_CARGO_FILTER_DROPDOWN, 0, 0);
@ -1078,6 +1090,13 @@ struct BuildVehicleWindow : Window {
virtual void OnInvalidateData(int data)
{
/* When switching to original acceleration model for road vehicles, clear the selected sort criteria if it is not available now. */
if (this->vehicle_type == VEH_ROAD &&
_settings_game.vehicle.roadveh_acceleration_model == AM_ORIGINAL &&
this->sort_criteria > 7) {
this->sort_criteria = 0;
_last_sort_criteria[VEH_ROAD] = 0;
}
this->eng_list.ForceRebuild();
}

View File

@ -793,7 +793,7 @@ static bool RoadVehAccelerationModelChanged(int32 p1)
/* These windows show acceleration values only when realistic acceleration is on. They must be redrawn after a setting change. */
SetWindowClassesDirty(WC_ENGINE_PREVIEW);
SetWindowClassesDirty(WC_BUILD_VEHICLE);
InvalidateWindowClassesData(WC_BUILD_VEHICLE, 0);
SetWindowClassesDirty(WC_VEHICLE_DETAILS);
return true;