OpenTTD Source: src/train_gui.cpp File Reference

OpenTTD Source 14.1

Data Structures | Typedefs | Functions | Variables
train_gui.cpp File Reference
`#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 "train_cmd.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 std::vector< CargoSummaryItem > | CargoSummary
| Container for the cargo summary information.

## Functions
void | CcBuildWagon (Commands, const CommandCost &result, VehicleID new_veh_id, uint, uint16_t, CargoArray, TileIndex tile, EngineID, bool, CargoID, ClientID)
| Callback for building wagons. More...
static int | HighlightDragPosition (int px, int max_width, int y, VehicleID selection, bool chain)
| Highlight the position where a rail vehicle is dragged over by drawing a light gray background. More...
void | DrawTrainImage (const Train *v, const Rect &r, VehicleID selection, EngineImageType image_type, int skip, VehicleID drag_dest)
| Draws an image of a whole train. More...
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. More...
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. More...
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. More...
static void | GetCargoSummaryOfArticulatedVehicle (const Train *v, CargoSummary &summary)
| Collects the cargo transported. More...
static uint | GetLengthOfArticulatedVehicle (const Train *v)
| Get the length of an articulated vehicle. More...
int | GetTrainDetailsWndVScroll (VehicleID veh_id, TrainDetailsWindowTabs det_tab)
| Determines the number of lines in the train details window. More...
void | DrawTrainDetails (const Train *v, const Rect &r, int vscroll_pos, uint16_t vscroll_cap, TrainDetailsWindowTabs det_tab)
| Draw the details for the given vehicle at the given position. More...

## 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.

## Function Documentation

## ◆ CcBuildWagon()

void CcBuildWagon | ( | Commands | ,
|  | const CommandCost & | result,
|  | VehicleID | new_veh_id,
|  | uint | ,
|  | uint16_t | ,
|  | CargoArray | ,
|  | TileIndex | tile,
|  | EngineID | ,
|  | bool | ,
|  | CargoID | ,
|  | ClientID |
| ) |  |

Callback for building wagons.

Parameters

  result | The result of the command.
  new_veh_id | ID of the ne vehicle.
  tile | The tile the command was executed on.

Definition at line 29 of file train_gui.cpp.

## ◆ DrawTrainDetails()

void DrawTrainDetails | ( | const Train * | v,
|  | const Rect & | r,
|  | int | vscroll_pos,
|  | uint16_t | vscroll_cap,
|  | TrainDetailsWindowTabs | det_tab
| ) |  |

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

Parameters

  v | current vehicle
  r | the Rect to draw within
  vscroll_pos | Position of scrollbar
  vscroll_cap | Number of lines currently displayed
  det_tab | Selected details tab

Definition at line 352 of file train_gui.cpp.

Referenced by VehicleDetailsWindow::DrawVehicleDetails().

## ◆ DrawTrainImage()

void DrawTrainImage | ( | const Train * | v,
|  | const Rect & | r,
|  | VehicleID | selection,
|  | EngineImageType | image_type,
|  | int | skip,
|  | VehicleID | drag_dest
| ) |  |

Draws an image of a whole train.

Parameters

  v | Front vehicle
  r | Rect 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 93 of file train_gui.cpp.

References _current_text_dir, DIR_E, DIR_W, FillDrawPixelInfo(), TD_RTL, and Rect::Width().

Referenced by DrawVehicleImage().

## ◆ GetCargoSummaryOfArticulatedVehicle()

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 269 of file train_gui.cpp.

References Engine::CanCarryCargo(), CargoSummaryItem::cargo, Vehicle::cargo_cap, Vehicle::cargo_type, and Vehicle::GetEngine().

Referenced by GetTrainDetailsWndVScroll().

## ◆ GetLengthOfArticulatedVehicle()

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 301 of file train_gui.cpp.

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

Referenced by GetTrainDetailsWndVScroll().

## ◆ 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 318 of file train_gui.cpp.

References _cargo_summary, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::Get(), SpecializedVehicle< Train, Type >::Get(), GetCargoSummaryOfArticulatedVehicle(), CargoArray::GetCount(), GetLengthOfArticulatedVehicle(), SpecializedVehicle< T, Type >::GetNextVehicle(), ScaleSpriteTrad(), TDW_TAB_TOTALS, and TRAIN_DETAILS_MAX_INDENT.

Referenced by VehicleDetailsWindow::OnPaint().

## ◆ HighlightDragPosition()

static int HighlightDragPosition | ( | int | px,
|  | int | max_width,
|  | int | y,
|  | 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.
  y | The vertical centre position to draw from.
  selection | Selected vehicle that is dragged.
  chain | Whether a whole chain is dragged.

Returns
  The width of the highlight mark.

Definition at line 60 of file train_gui.cpp.

## ◆ TrainDetailsCapacityTab()

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 247 of file train_gui.cpp.

## ◆ TrainDetailsCargoTab()

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 201 of file train_gui.cpp.

## ◆ TrainDetailsInfoTab()

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 225 of file train_gui.cpp.