OpenTTD Source: src/engine_gui.h File Reference

OpenTTD Source 15.0-RC2

Data Structures | Typedefs | Functions | Variables
engine_gui.h File Reference

Engine GUI functions, used by build_vehicle_gui and autoreplace_gui More...

`#include "engine_type.h"`
`#include "group_type.h"`
`#include "newgrf_badge_gui.h"`
`#include "sortlist_type.h"`
`#include "gfx_type.h"`
`#include "vehicle_type.h"`
`#include "engine_base.h"`

Go to the source code of this file.

## Data Structures
struct | GUIEngineListItem

## Typedefs
typedef GUIList< GUIEngineListItem, std::nullptr_t, CargoType > | GUIEngineList
typedef bool | EngList_SortTypeFunction(const GUIEngineListItem &, const GUIEngineListItem &)
| argument type for EngList_Sort.

## Functions
void | EngList_Sort (GUIEngineList &el, EngList_SortTypeFunction compare)
| Sort all items using quick sort and given 'CompareItems' function.
void | EngList_SortPartial (GUIEngineList &el, EngList_SortTypeFunction compare, size_t begin, size_t num_items)
| Sort selected range of items (on indices @ <begin, begin+num_items-1>)
StringID | GetEngineCategoryName (EngineID engine)
| Return the category of an engine.
std::string | GetEngineInfoString (EngineID engine)
| Get a multi-line string with some technical data, describing the engine.
void | DrawVehicleEngine (int left, int right, int preferred_x, int y, EngineID engine, PaletteID pal, EngineImageType image_type)
| Draw an engine.
void | DrawTrainEngine (int left, int right, int preferred_x, int y, EngineID engine, PaletteID pal, EngineImageType image_type)
void | DrawRoadVehEngine (int left, int right, int preferred_x, int y, EngineID engine, PaletteID pal, EngineImageType image_type)
| Draw a road vehicle engine.
void | DrawShipEngine (int left, int right, int preferred_x, int y, EngineID engine, PaletteID pal, EngineImageType image_type)
void | DrawAircraftEngine (int left, int right, int preferred_x, int y, EngineID engine, PaletteID pal, EngineImageType image_type)
uint | GetEngineListHeight (VehicleType type)
| Get the height of a single 'entry' in the engine lists.
void | DisplayVehicleSortDropDown (Window *w, VehicleType vehicle_type, int selected, WidgetID button)
| Display the dropdown for the vehicle sort criteria.
void | DrawEngineList (VehicleType type, const Rect &r, const GUIEngineList &eng_list, const Scrollbar &sb, EngineID selected_id, bool show_count, GroupID selected_group, const GUIBadgeClasses &badge_classes)
| Engine drawing loop.
void | GUIEngineListAddChildren (GUIEngineList &dst, const GUIEngineList &src, EngineID parent=EngineID::Invalid(), uint8_t indent=0)
| Add children to GUI engine list to build a hierarchical tree.

## Variables
bool | _engine_sort_direction
| `false` = descending, `true` = ascending.
uint8_t | _engine_sort_last_criteria []
| Last set sort criteria, for each vehicle type.
bool | _engine_sort_last_order []
| Last set direction of the sort order, for each vehicle type.
bool | _engine_sort_show_hidden_engines []
| Last set 'show hidden engines' setting for each vehicle type.
const std::initializer_list< const StringID > | _engine_sort_listing []
| Dropdown menu strings for the vehicle sort criteria.
EngList_SortTypeFunction *const | _engine_sort_functions [][11]
| Sort functions for the vehicle sort criteria, for each vehicle type.

## Detailed Description

Engine GUI functions, used by build_vehicle_gui and autoreplace_gui

Definition in file engine_gui.h.

## Typedef Documentation

## ◆ EngList_SortTypeFunction

typedef bool EngList_SortTypeFunction(const GUIEngineListItem &, const GUIEngineListItem &)

argument type for EngList_Sort.

Definition at line 33 of file engine_gui.h.

## ◆ GUIEngineList

typedef GUIList<GUIEngineListItem, std::nullptr_t, CargoType> GUIEngineList

Definition at line 31 of file engine_gui.h.

## Function Documentation

## ◆ DisplayVehicleSortDropDown()

void DisplayVehicleSortDropDown | ( | Window * | w,
|  | VehicleType | vehicle_type,
|  | int | selected,
|  | WidgetID | button
| ) |  |

Display the dropdown for the vehicle sort criteria.

Parameters

  w | Parent window (holds the dropdown button).
  vehicle_type | Vehicle type being sorted.
  selected | Currently selected sort criterium.
  button | Widget button.

Definition at line 1099 of file build_vehicle_gui.cpp.

References _engine_sort_listing, _settings_game, VehicleSettings::roadveh_acceleration_model, SetBit(), ShowDropDownMenu(), VehicleSettings::train_acceleration_model, VEH_ROAD, VEH_TRAIN, and GameSettings::vehicle.

Referenced by ReplaceVehicleWindow::OnClick(), and BuildVehicleWindow::OnClick().

## ◆ DrawAircraftEngine()

void DrawAircraftEngine | ( | int | left,
|  | int | right,
|  | int | preferred_x,
|  | int | y,
|  | EngineID | engine,
|  | PaletteID | pal,
|  | EngineImageType | image_type
| ) |  |

Definition at line 217 of file aircraft_cmd.cpp.

## ◆ DrawEngineList()

void DrawEngineList | ( | VehicleType | type,
|  | const Rect & | r,
|  | const GUIEngineList & | eng_list,
|  | const Scrollbar & | sb,
|  | EngineID | selected_id,
|  | bool | show_count,
|  | GroupID | selected_group,
|  | const GUIBadgeClasses & | badge_classes
| ) |  |

Engine drawing loop.

Parameters

  type | Type of vehicle (VEH_*)
  r | The Rect of the list
  eng_list | What engines to draw
  sb | Scrollbar of list.
  selected_id | what engine to highlight as selected, if any
  show_count | Whether to show the amount of engines or not
  selected_group | the group to list the engines of

Definition at line 966 of file build_vehicle_gui.cpp.

References _current_text_dir, _local_company, AutoreplaceVehicleInUse, CentreBounds(), Engine::company_hidden, DrawString(), DrawVehicleEngine(), EIT_PURCHASE, EngineHasReplacementForCompany(), VehicleCellSize::extend_left, VehicleCellSize::extend_right, FS_NORMAL, FS_SMALL, WidgetDimensions::fullbevel, Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_engine_pool >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_company_pool >::Get(), GetCharacterHeight(), GetColourGradient(), GetEngineListHeight(), GetEnginePalette(), GetGroupNumEngines(), GetScaledSpriteSize(), GetSpriteSize(), GetString(), GetStringBoundingBox(), GetVehicleImageCellSize(), Scrollbar::GetVisibleRangeIterators(), HasBit(), HasVariants, Rect::Height(), WidgetDimensions::hsep_indent, WidgetDimensions::hsep_normal, Rect::Indent(), IsFolded, PackEngineNameDParam(), PALETTE_CRASH, PurchaseList, SA_CENTER, SA_FORCE, SA_RIGHT, WidgetDimensions::scaled, ScaleSpriteTrad(), Shaded, Rect::Shrink(), TC_FORCED, TC_NO_SHADE, TD_RTL, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), Rect::Translate(), Rect::WithHeight(), Rect::WithWidth(), and Rect::WithY().

Referenced by ReplaceVehicleWindow::DrawWidget(), and BuildVehicleWindow::DrawWidget().

## ◆ DrawRoadVehEngine()

void DrawRoadVehEngine | ( | int | left,
|  | int | right,
|  | int | preferred_x,
|  | int | y,
|  | EngineID | engine,
|  | PaletteID | pal,
|  | EngineImageType | image_type
| ) |  |

Draw a road vehicle engine.

Parameters

  left | Left edge to draw within.
  right | Right edge to draw within.
  preferred_x | Preferred position of the engine.
  y | Vertical position of the engine.
  engine | Engine to draw
  pal | Palette to use.

Definition at line 149 of file roadveh_cmd.cpp.

References Clamp(), VehicleSpriteSeq::Draw(), VehicleSpriteSeq::GetBounds(), PALETTE_CRASH, and UnScaleGUI().

Referenced by DrawVehicleEngine().

## ◆ DrawShipEngine()

void DrawShipEngine | ( | int | left,
|  | int | right,
|  | int | preferred_x,
|  | int | y,
|  | EngineID | engine,
|  | PaletteID | pal,
|  | EngineImageType | image_type
| ) |  |

Definition at line 96 of file ship_cmd.cpp.

## ◆ DrawTrainEngine()

void DrawTrainEngine | ( | int | left,
|  | int | right,
|  | int | preferred_x,
|  | int | y,
|  | EngineID | engine,
|  | PaletteID | pal,
|  | EngineImageType | image_type
| ) |  |

Definition at line 536 of file train_cmd.cpp.

## ◆ DrawVehicleEngine()

void DrawVehicleEngine | ( | int | left,
|  | int | right,
|  | int | preferred_x,
|  | int | y,
|  | EngineID | engine,
|  | PaletteID | pal,
|  | EngineImageType | image_type
| ) |  |

Draw an engine.

Parameters

  left | Minimum horizontal position to use for drawing the engine
  right | Maximum horizontal position to use for drawing the engine
  preferred_x | Horizontal position to use for drawing the engine.
  y | Vertical position to use for drawing the engine.
  engine | Engine to draw.
  pal | Palette to use for drawing.

Definition at line 326 of file engine_gui.cpp.

References DrawRoadVehEngine(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_engine_pool >::Get(), Engine::type, VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, and VEH_TRAIN.

Referenced by DrawEngineList(), EnginePreviewWindow::DrawWidget(), and NewsWindow::DrawWidget().

## ◆ EngList_Sort()

void EngList_Sort | ( | GUIEngineList & | el,
|  | EngList_SortTypeFunction | compare
| ) |  |

Sort all items using quick sort and given 'CompareItems' function.

Parameters

  el | list to be sorted
  compare | function for evaluation of the quicksort

Definition at line 356 of file engine_gui.cpp.

Referenced by ReplaceVehicleWindow::GenerateReplaceVehList().

## ◆ EngList_SortPartial()

void EngList_SortPartial | ( | GUIEngineList & | el,
|  | EngList_SortTypeFunction | compare,
|  | size_t | begin,
|  | size_t | num_items
| ) |  |

Sort selected range of items (on indices @ <begin, begin+num_items-1>)

Parameters

  el | list to be sorted
  compare | function for evaluation of the quicksort
  begin | start of sorting
  num_items | count of items to be sorted

Definition at line 369 of file engine_gui.cpp.

## ◆ GetEngineCategoryName()

StringID GetEngineCategoryName | ( | EngineID | engine | ) |

Return the category of an engine.

Parameters

  engine | Engine to examine.

Returns
  String describing the category ("road veh", "train". "airplane", or "ship") of the engine.

Definition at line 40 of file engine_gui.cpp.

References BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Any(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_engine_pool >::Get(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::GetNthSetBit(), GetRailTypeInfo(), GetRoadTypeInfo(), RoadTypeInfo::new_engine, RailTypeInfo::new_loco, RailVehicleInfo::railtypes, RoadVehicleInfo::roadtype, RailTypeInfo::strings, RoadTypeInfo::strings, Engine::type, VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, and VEH_TRAIN.

Referenced by EnginePreviewWindow::DrawWidget(), NewVehicleAvailable(), and EnginePreviewWindow::UpdateWidgetSize().

## ◆ GetEngineInfoString()

std::string GetEngineInfoString | ( | EngineID | engine | ) |

Get a multi-line string with some technical data, describing the engine.

Parameters

  engine | Engine to describe.

Returns
  String describing the engine.

Postcondition
  `DParam` array is set up for printing the string.

Definition at line 296 of file engine_gui.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_engine_pool >::Get(), Engine::type, VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, and VEH_TRAIN.

Referenced by EnginePreviewWindow::DrawWidget(), NewsWindow::DrawWidget(), EnginePreviewWindow::UpdateWidgetSize(), and NewsWindow::UpdateWidgetSize().

## ◆ GetEngineListHeight()

uint GetEngineListHeight | ( | VehicleType | type | ) |

Get the height of a single 'entry' in the engine lists.

Parameters

  type | the vehicle type to get the height of

Returns
  the height for the entry

Definition at line 56 of file build_vehicle_gui.cpp.

References EIT_PURCHASE, FS_NORMAL, GetCharacterHeight(), GetVehicleImageCellSize(), and WidgetDimensions::scaled.

Referenced by DrawEngineList(), ReplaceVehicleWindow::UpdateWidgetSize(), and BuildVehicleWindow::UpdateWidgetSize().

## ◆ GUIEngineListAddChildren()

void GUIEngineListAddChildren | ( | GUIEngineList & | dst,
|  | const GUIEngineList & | src,
|  | EngineID | parent,
|  | uint8_t | indent
| ) |  |

Add children to GUI engine list to build a hierarchical tree.

Parameters

  dst | Destination list.
  src | Source list.
  parent | Current tree parent (set by self with recursion).
  indent | Current tree indentation level (set by self with recursion).

Definition at line 1122 of file build_vehicle_gui.cpp.

References Engine::display_last_variant, Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_engine_pool >::Get(), GUIEngineListAddChildren(), HasVariants, IsFolded, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Reset(), and Shaded.

Referenced by ReplaceVehicleWindow::GenerateReplaceVehList(), and GUIEngineListAddChildren().

## Variable Documentation

## ◆ _engine_sort_direction

bool _engine_sort_direction
| extern

`false` = descending, `true` = ascending.

Definition at line 104 of file build_vehicle_gui.cpp.

Referenced by AircraftEngineCargoSorter(), AircraftRangeSorter(), EngineCostSorter(), EngineIntroDateSorter(), EngineNameSorter(), EngineNumberSorter(), EnginePowerSorter(), EnginePowerVsRunningCostSorter(), EngineReliabilitySorter(), EngineRunningCostSorter(), EngineSpeedSorter(), EngineTractiveEffortSorter(), ReplaceVehicleWindow::GenerateReplaceVehList(), RoadVehEngineCapacitySorter(), ShipEngineCapacitySorter(), TrainEngineCapacitySorter(), and TrainEnginesThenWagonsSorter().

## ◆ _engine_sort_functions

EngList_SortTypeFunction* const _engine_sort_functions[][11]
| extern

Sort functions for the vehicle sort criteria, for each vehicle type.

Definition at line 441 of file build_vehicle_gui.cpp.

Referenced by ReplaceVehicleWindow::GenerateReplaceVehList().

## ◆ _engine_sort_last_criteria

uint8_t _engine_sort_last_criteria[]
| extern

Last set sort criteria, for each vehicle type.

Definition at line 105 of file build_vehicle_gui.cpp.

Referenced by BuildVehicleWindow::OnDropdownSelect(), ReplaceVehicleWindow::OnDropdownSelect(), and BuildVehicleWindow::OnInvalidateData().

## ◆ _engine_sort_last_order

bool _engine_sort_last_order[]
| extern

Last set direction of the sort order, for each vehicle type.

Definition at line 106 of file build_vehicle_gui.cpp.

Referenced by ReplaceVehicleWindow::OnClick(), and BuildVehicleWindow::OnClick().

## ◆ _engine_sort_listing

const std::initializer_list<const StringID> _engine_sort_listing[]
| extern

Dropdown menu strings for the vehicle sort criteria.

Definition at line 491 of file build_vehicle_gui.cpp.

Referenced by DisplayVehicleSortDropDown(), ReplaceVehicleWindow::GetWidgetString(), and BuildVehicleWindow::GetWidgetString().

## ◆ _engine_sort_show_hidden_engines

bool _engine_sort_show_hidden_engines[]
| extern

Last set 'show hidden engines' setting for each vehicle type.

Definition at line 107 of file build_vehicle_gui.cpp.

Referenced by ReplaceVehicleWindow::OnClick(), and BuildVehicleWindow::OnClick().