mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-09 19:10:38 +00:00
(svn r8337) -Cleanup: removed some more switch-cases in build_vehicle_gui.cpp and added arrays + VehTypeToIndex() instead
This commit is contained in:
parent
8f4e2e8040
commit
cf0e5816d6
@ -287,7 +287,7 @@ static int CDECL AircraftEngineCargoSorter(const void *a, const void *b)
|
||||
return _internal_sort_order ? -r : r;
|
||||
}
|
||||
|
||||
static EngList_SortTypeFunction * const _train_sorter[] = {
|
||||
static EngList_SortTypeFunction * const _sorter[][9] = {{
|
||||
&EngineNumberSorter,
|
||||
&TrainEngineCostSorter,
|
||||
&TrainEngineSpeedSorter,
|
||||
@ -297,9 +297,28 @@ static EngList_SortTypeFunction * const _train_sorter[] = {
|
||||
&TrainEngineRunningCostSorter,
|
||||
&TrainEnginePowerVsRunningCostSorter,
|
||||
&EngineReliabilitySorter,
|
||||
};
|
||||
},{
|
||||
&EngineNumberSorter,
|
||||
&EngineIntroDateSorter,
|
||||
&EngineNameSorter,
|
||||
&EngineReliabilitySorter,
|
||||
},{
|
||||
&EngineNumberSorter,
|
||||
&EngineIntroDateSorter,
|
||||
&EngineNameSorter,
|
||||
&EngineReliabilitySorter,
|
||||
},{
|
||||
&EngineNumberSorter,
|
||||
&AircraftEngineCostSorter,
|
||||
&AircraftEngineSpeedSorter,
|
||||
&EngineIntroDateSorter,
|
||||
&EngineNameSorter,
|
||||
&AircraftEngineRunningCostSorter,
|
||||
&EngineReliabilitySorter,
|
||||
&AircraftEngineCargoSorter,
|
||||
}};
|
||||
|
||||
static const StringID _train_sort_listing[] = {
|
||||
static const StringID _sort_listing[][10] = {{
|
||||
STR_ENGINE_SORT_ENGINE_ID,
|
||||
STR_ENGINE_SORT_COST,
|
||||
STR_SORT_BY_MAX_SPEED,
|
||||
@ -310,35 +329,19 @@ static const StringID _train_sort_listing[] = {
|
||||
STR_ENGINE_SORT_POWER_VS_RUNNING_COST,
|
||||
STR_SORT_BY_RELIABILITY,
|
||||
INVALID_STRING_ID
|
||||
};
|
||||
|
||||
static EngList_SortTypeFunction * const _ship_sorter[] = {
|
||||
&EngineNumberSorter,
|
||||
&EngineIntroDateSorter,
|
||||
&EngineNameSorter,
|
||||
&EngineReliabilitySorter,
|
||||
};
|
||||
|
||||
static const StringID _ship_sort_listing[] = {
|
||||
},{
|
||||
STR_ENGINE_SORT_ENGINE_ID,
|
||||
STR_ENGINE_SORT_INTRO_DATE,
|
||||
STR_SORT_BY_DROPDOWN_NAME,
|
||||
STR_SORT_BY_RELIABILITY,
|
||||
INVALID_STRING_ID
|
||||
};
|
||||
|
||||
static EngList_SortTypeFunction * const _aircraft_sorter[] = {
|
||||
&EngineNumberSorter,
|
||||
&AircraftEngineCostSorter,
|
||||
&AircraftEngineSpeedSorter,
|
||||
&EngineIntroDateSorter,
|
||||
&EngineNameSorter,
|
||||
&AircraftEngineRunningCostSorter,
|
||||
&EngineReliabilitySorter,
|
||||
&AircraftEngineCargoSorter,
|
||||
};
|
||||
|
||||
static const StringID _aircraft_sort_listing[] = {
|
||||
},{
|
||||
STR_ENGINE_SORT_ENGINE_ID,
|
||||
STR_ENGINE_SORT_INTRO_DATE,
|
||||
STR_SORT_BY_DROPDOWN_NAME,
|
||||
STR_SORT_BY_RELIABILITY,
|
||||
INVALID_STRING_ID
|
||||
},{
|
||||
STR_ENGINE_SORT_ENGINE_ID,
|
||||
STR_ENGINE_SORT_COST,
|
||||
STR_SORT_BY_MAX_SPEED,
|
||||
@ -348,8 +351,7 @@ static const StringID _aircraft_sort_listing[] = {
|
||||
STR_SORT_BY_RELIABILITY,
|
||||
STR_ENGINE_SORT_CARGO_CAPACITY,
|
||||
INVALID_STRING_ID
|
||||
};
|
||||
|
||||
}};
|
||||
|
||||
/* Draw rail wagon specific details */
|
||||
static int DrawVehiclePurchaseInfo(int x, int y, EngineID engine_number, const RailVehicleInfo *rvi)
|
||||
@ -590,10 +592,10 @@ static void GenerateBuildTrainList(Window *w)
|
||||
|
||||
// and then sort engines
|
||||
_internal_sort_order = bv->descending_sort_order;
|
||||
EngList_SortPartial(&bv->eng_list, _train_sorter[bv->sort_criteria], 0, num_engines);
|
||||
EngList_SortPartial(&bv->eng_list, _sorter[0][bv->sort_criteria], 0, num_engines);
|
||||
|
||||
// and finally sort wagons
|
||||
EngList_SortPartial(&bv->eng_list, _train_sorter[bv->sort_criteria], num_engines, num_wagons);
|
||||
EngList_SortPartial(&bv->eng_list, _sorter[0][bv->sort_criteria], num_engines, num_wagons);
|
||||
}
|
||||
|
||||
/* Figure out what aircraft EngineIDs to put in the list */
|
||||
@ -661,18 +663,16 @@ static void GenerateBuildList(Window *w)
|
||||
switch (bv->vehicle_type) {
|
||||
case VEH_Train:
|
||||
GenerateBuildTrainList(w);
|
||||
break;
|
||||
return; // trains should not reach the last sorting
|
||||
case VEH_Ship:
|
||||
GenerateBuildShipList(w);
|
||||
_internal_sort_order = bv->descending_sort_order;
|
||||
EngList_Sort(&bv->eng_list, _ship_sorter[bv->sort_criteria]);
|
||||
break;
|
||||
case VEH_Aircraft:
|
||||
GenerateBuildAircraftList(w);
|
||||
_internal_sort_order = bv->descending_sort_order;
|
||||
EngList_Sort(&bv->eng_list, _aircraft_sorter[bv->sort_criteria]);
|
||||
break;
|
||||
}
|
||||
_internal_sort_order = bv->descending_sort_order;
|
||||
EngList_Sort(&bv->eng_list, _sorter[VehTypeToIndex(bv->vehicle_type)][bv->sort_criteria]);
|
||||
}
|
||||
|
||||
static void DrawBuildVehicleWindow(Window *w)
|
||||
@ -724,17 +724,8 @@ static void DrawBuildVehicleWindow(Window *w)
|
||||
DrawVehiclePurchaseInfo(x, wi->top + 1, wi->right - wi->left - 2, selected_id);
|
||||
}
|
||||
}
|
||||
{
|
||||
StringID str = STR_NULL;
|
||||
switch (bv->vehicle_type) {
|
||||
case VEH_Train: str = _train_sort_listing[bv->sort_criteria]; break;
|
||||
case VEH_Ship: str = _ship_sort_listing[bv->sort_criteria]; break;
|
||||
case VEH_Aircraft: str = _aircraft_sort_listing[bv->sort_criteria]; break;
|
||||
}
|
||||
|
||||
DrawString(85, 15, str, 0x10);
|
||||
DoDrawString(bv->descending_sort_order ? DOWNARROW : UPARROW, 69, 15, 0x10);
|
||||
}
|
||||
DrawString(85, 15, _sort_listing[VehTypeToIndex(bv->vehicle_type)][bv->sort_criteria], 0x10);
|
||||
DoDrawString(bv->descending_sort_order ? DOWNARROW : UPARROW, 69, 15, 0x10);
|
||||
}
|
||||
|
||||
static void BuildVehicleClickEvent(Window *w, WindowEvent *e)
|
||||
@ -758,18 +749,8 @@ static void BuildVehicleClickEvent(Window *w, WindowEvent *e)
|
||||
}
|
||||
|
||||
case BUILD_VEHICLE_WIDGET_SORT_TEXT: case BUILD_VEHICLE_WIDGET_SORT_DROPDOWN: // Select sorting criteria dropdown menu
|
||||
switch (bv->vehicle_type) {
|
||||
case VEH_Train:
|
||||
ShowDropDownMenu(w, _train_sort_listing, bv->sort_criteria, BUILD_VEHICLE_WIDGET_SORT_DROPDOWN, 0, 0);
|
||||
break;
|
||||
case VEH_Ship:
|
||||
ShowDropDownMenu(w, _ship_sort_listing, bv->sort_criteria, BUILD_VEHICLE_WIDGET_SORT_DROPDOWN, 0, 0);
|
||||
break;
|
||||
case VEH_Aircraft:
|
||||
ShowDropDownMenu(w, _aircraft_sort_listing, bv->sort_criteria, BUILD_VEHICLE_WIDGET_SORT_DROPDOWN, 0, 0);
|
||||
break;
|
||||
}
|
||||
return;
|
||||
ShowDropDownMenu(w, _sort_listing[VehTypeToIndex(bv->vehicle_type)], bv->sort_criteria, BUILD_VEHICLE_WIDGET_SORT_DROPDOWN, 0, 0);
|
||||
break;
|
||||
|
||||
case BUILD_VEHICLE_WIDGET_BUILD: {
|
||||
EngineID sel_eng = bv->sel_engine;
|
||||
|
Loading…
Reference in New Issue
Block a user