OpenTTD: src/train_gui.cpp File Reference

OpenTTD

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- File List
- Globals

Data Structures | Typedefs | Functions | Variables
train_gui.cpp File Reference

GUI for trains. More...

`#include "stdafx.h"`
`#include "window_gui.h"`
`#include "command_func.h"`
`#include "train.h"`
`#include "strings_func.h"`
`#include "vehicle_func.h"`
`#include "zoom_func.h"`
`#include "table/strings.h"`
`#include "safeguards.h"`

Go to the source code of this file.

## Data Structures
struct | CargoSummaryItem
| Helper struct for the cargo details information. More...

## Typedefs
typedef SmallVector < CargoSummaryItem, 2 > | CargoSummary
| Container for the cargo summary information.

## Functions
void | CcBuildWagon (const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
| Callback for building wagons.
static int | HighlightDragPosition (int px, int max_width, VehicleID selection, bool chain)
| Highlight the position where a rail vehicle is dragged over by drawing a light gray background.
void | DrawTrainImage (const Train *v, int left, int right, int y, VehicleID selection, EngineImageType image_type, int skip, VehicleID drag_dest)
| Draws an image of a whole train.
static void | TrainDetailsCargoTab (const CargoSummaryItem *item, int left, int right, int y)
| Draw the details cargo tab for the given vehicle at the given position.
static void | TrainDetailsInfoTab (const Vehicle *v, int left, int right, int y)
| Draw the details info tab for the given vehicle at the given position.
static void | TrainDetailsCapacityTab (const CargoSummaryItem *item, int left, int right, int y)
| Draw the details capacity tab for the given vehicle at the given position.
static void | GetCargoSummaryOfArticulatedVehicle (const Train *v, CargoSummary *summary)
| Collects the cargo transported.
static uint | GetLengthOfArticulatedVehicle (const Train *v)
| Get the length of an articulated vehicle.
int | GetTrainDetailsWndVScroll (VehicleID veh_id, TrainDetailsWindowTabs det_tab)
| Determines the number of lines in the train details window.
void | DrawTrainDetails (const Train *v, int left, int right, int y, int vscroll_pos, uint16 vscroll_cap, TrainDetailsWindowTabs det_tab)
| Draw the details for the given vehicle at the given position.

## Variables
static const uint | TRAIN_DETAILS_MIN_INDENT = 32
| Minimum indent level in the train details window.
static const uint | TRAIN_DETAILS_MAX_INDENT = 72
| Maximum indent level in the train details window; wider than this and we start on a new line.
static CargoSummary | _cargo_summary
| Reused container of cargo details.

## Detailed Description

GUI for trains.

Definition in file train_gui.cpp.

## Typedef Documentation

typedef SmallVector<CargoSummaryItem, 2> CargoSummary

Container for the cargo summary information.

Definition at line 181 of file train_gui.cpp.

## Function Documentation

void CcBuildWagon | ( | const CommandCost & | result,
|  | TileIndex | tile,
|  | uint32 | p1,
|  | uint32 | p2
| ) |  |

Callback for building wagons.

Parameters

  result | The result of the command.
  tile | The tile the command was executed on.
  p1 | Additional data for the command (for the CommandProc)
  p2 | Additional data for the command (for the CommandProc)

Definition at line 31 of file train_gui.cpp.

References CMD_MOVE_RAIL_VEHICLE, DoCommandP(), CommandCost::Failed(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, InvalidateWindowClassesData(), Vehicle::IsFrontEngine(), Vehicle::IsStoppedInDepot(), Vehicle::Last(), Vehicle::tile, and WC_TRAINS_LIST.

Referenced by BuildVehicleWindow::OnClick().

void DrawTrainDetails | ( | const Train * | v,
|  | int | left,
|  | int | right,
|  | int | y,
|  | int | vscroll_pos,
|  | uint16 | vscroll_cap,
|  | TrainDetailsWindowTabs | det_tab
| ) |  |

Draw the details for the given vehicle at the given position.

Parameters

  v | current vehicle
  left | The left most coordinate to draw
  right | The right most coordinate to draw
  y | The y coordinate
  vscroll_pos | Position of scrollbar
  vscroll_cap | Number of lines currently displayed
  det_tab | Selected details tab

Definition at line 354 of file train_gui.cpp.

References _colour_gradient, _current_text_dir, _settings_game, DIR_E, DIR_W, DrawSprite(), DrawString(), EIT_IN_DETAILS, Vehicle::engine_type, FONT_HEIGHT_NORMAL, VehicleSettings::freight_trains, FreightWagonMult(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), GetCargoSummaryOfArticulatedVehicle(), Train::GetDisplayImageWidth(), Engine::GetGRF(), Train::GetImage(), SpecializedVehicle< T, Type >::GetNextVehicle(), GetVehicleHeight(), GetVehiclePalette(), GfxFillRect(), Vehicle::IsArticulatedPart(), SmallVector< T, S >::Length(), max(), SpecializedVehicle< T, Type >::Next(), NUM_CARGO, PALETTE_CRASH, ScaleGUITrad(), SetDParam(), TD_RTL, TDW_TAB_CAPACITY, TDW_TAB_CARGO, TDW_TAB_INFO, TDW_TAB_TOTALS, TRAIN_DETAILS_MAX_INDENT, TRAIN_DETAILS_MIN_INDENT, TrainDetailsCapacityTab(), TrainDetailsCargoTab(), TrainDetailsInfoTab(), GRFFile::traininfo_vehicle_pitch, VEH_TRAIN, GameSettings::vehicle, Vehicle::vehstatus, VS_CRASHED, WD_MATRIX_BOTTOM, and WD_MATRIX_TOP.

Referenced by VehicleDetailsWindow::DrawVehicleDetails().

void DrawTrainImage | ( | const Train * | v,
|  | int | left,
|  | int | right,
|  | int | y,
|  | VehicleID | selection,
|  | EngineImageType | image_type,
|  | int | skip,
|  | VehicleID | drag_dest
| ) |  |

Draws an image of a whole train.

Parameters

  v | Front vehicle
  left | The minimum horizontal position
  right | The maximum horizontal position
  y | Vertical position to draw at
  selection | Selected vehicle to draw a frame around
  skip | Number of pixels to skip at the front (for scrolling)
  drag_dest | The vehicle another one is dragged over, `INVALID_VEHICLE` if none.

Definition at line 94 of file train_gui.cpp.

References _current_text_dir, DIR_E, DIR_W, DrawFrameRect(), DrawSprite(), FillDrawPixelInfo(), FR_BORDERONLY, SpecializedVehicle< Train, Type >::From(), Train::GetDisplayImageWidth(), GetVehiclePalette(), HighlightDragPosition(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_VEHICLE, SpecializedVehicle< T, Type >::Next(), PALETTE_CRASH, ScaleGUITrad(), TD_RTL, CursorVars::vehchain, and VS_CRASHED.

Referenced by DrawVehicleImage(), and DepotWindow::DrawVehicleInDepot().

static void GetCargoSummaryOfArticulatedVehicle | ( | const Train * | v,
|  | CargoSummary * | summary
| ) |  |
| static

Collects the cargo transported.

Parameters

  v | Vehicle to process
  summary | Space for the result

Definition at line 262 of file train_gui.cpp.

References CargoSummaryItem::amount, SmallVector< T, S >::Append(), Engine::CanCarryCargo(), CargoSummaryItem::capacity, CargoSummaryItem::cargo, Vehicle::cargo, Vehicle::cargo_cap, Vehicle::cargo_type, SmallVector< T, S >::Clear(), SmallVector< T, S >::End(), SmallVector< T, S >::Find(), GetCargoSubtypeText(), Vehicle::GetEngine(), INVALID_CARGO, Vehicle::IsArticulatedPart(), SpecializedVehicle< T, Type >::Next(), CargoSummaryItem::source, VehicleCargoList::Source(), VehicleCargoList::StoredCount(), and CargoSummaryItem::subtype.

Referenced by DrawTrainDetails(), and GetTrainDetailsWndVScroll().

static uint GetLengthOfArticulatedVehicle | ( | const Train * | v | ) |
| static

Get the length of an articulated vehicle.

Parameters

  v | the vehicle to get the length of.

Returns
  the length in pixels.

Definition at line 294 of file train_gui.cpp.

References Train::GetDisplayImageWidth(), Vehicle::IsArticulatedPart(), and SpecializedVehicle< T, Type >::Next().

Referenced by GetTrainDetailsWndVScroll().

int GetTrainDetailsWndVScroll | ( | VehicleID | veh_id,
|  | TrainDetailsWindowTabs | det_tab
| ) |  |

Determines the number of lines in the train details window.

Parameters

  veh_id | Train
  det_tab | Selected details tab

Returns
  Number of line

Definition at line 311 of file train_gui.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::Get(), SpecializedVehicle< Train, Type >::Get(), GetCargoSummaryOfArticulatedVehicle(), GetLengthOfArticulatedVehicle(), SpecializedVehicle< T, Type >::GetNextVehicle(), SmallVector< T, S >::Length(), max(), NUM_CARGO, TDW_TAB_TOTALS, and TRAIN_DETAILS_MAX_INDENT.

Referenced by VehicleDetailsWindow::OnPaint().

static int HighlightDragPosition | ( | int | px,
|  | int | max_width,
|  | VehicleID | selection,
|  | bool | chain
| ) |  |
| static

Highlight the position where a rail vehicle is dragged over by drawing a light gray background.

Parameters

  px | The current x position to draw from.
  max_width | The maximum space available to draw.
  selection | Selected vehicle that is dragged.
  chain | Whether a whole chain is dragged.

Returns
  The width of the highlight mark.

Definition at line 62 of file train_gui.cpp.

References _colour_gradient, _current_text_dir, SpecializedVehicle< Train, Type >::Get(), GfxFillRect(), INVALID_VEHICLE, max(), min(), SpecializedVehicle< T, Type >::Next(), ScaleGUITrad(), TD_RTL, WD_FRAMERECT_BOTTOM, WD_FRAMERECT_LEFT, WD_FRAMERECT_RIGHT, and WD_FRAMERECT_TOP.

Referenced by DrawTrainImage().

static void TrainDetailsCapacityTab | ( | const CargoSummaryItem * | item,
|  | int | left,
|  | int | right,
|  | int | y
| ) |  |
| static

Draw the details capacity tab for the given vehicle at the given position.

Parameters

  item | Data to draw
  left | The left most coordinate to draw
  right | The right most coordinate to draw
  y | The y coordinate

Definition at line 240 of file train_gui.cpp.

References _settings_game, CargoSummaryItem::capacity, CargoSummaryItem::cargo, DrawString(), VehicleSettings::freight_trains, FreightWagonMult(), INVALID_CARGO, SetDParam(), CargoSummaryItem::subtype, and GameSettings::vehicle.

Referenced by DrawTrainDetails().

static void TrainDetailsCargoTab | ( | const CargoSummaryItem * | item,
|  | int | left,
|  | int | right,
|  | int | y
| ) |  |
| static

Draw the details cargo tab for the given vehicle at the given position.

Parameters

  item | Data to draw
  left | The left most coordinate to draw
  right | The right most coordinate to draw
  y | The y coordinate

Definition at line 193 of file train_gui.cpp.

References _settings_game, CargoSummaryItem::amount, CargoSummaryItem::cargo, DrawString(), VehicleSettings::freight_trains, FreightWagonMult(), INVALID_CARGO, SetDParam(), CargoSummaryItem::source, and GameSettings::vehicle.

Referenced by DrawTrainDetails().

static void TrainDetailsInfoTab | ( | const Vehicle * | v,
|  | int | left,
|  | int | right,
|  | int | y
| ) |  |
| static

Draw the details info tab for the given vehicle at the given position.

Parameters

  v | current vehicle
  left | The left most coordinate to draw
  right | The right most coordinate to draw
  y | The y coordinate

Definition at line 218 of file train_gui.cpp.

References Vehicle::build_year, DrawString(), Vehicle::engine_type, RAILVEH_WAGON, SetDParam(), and Vehicle::value.

Referenced by DrawTrainDetails().