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 "table/strings.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)
| 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 176 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 28 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 349 of file train_gui.cpp.

References _colour_gradient, _current_text_dir, _settings_game, DIR_E, DrawSprite(), DrawString(), EIT_IN_DETAILS, FONT_HEIGHT_NORMAL, VehicleSettings::freight_trains, FreightWagonMult(), GetCargoSummaryOfArticulatedVehicle(), Train::GetDisplayImageWidth(), Train::GetImage(), SpecializedVehicle< T, Type >::GetNextVehicle(), GetVehiclePalette(), GfxFillRect(), Vehicle::IsArticulatedPart(), SmallVector< T, S >::Length(), max(), SpecializedVehicle< T, Type >::Next(), PALETTE_CRASH, SetDParam(), TDW_TAB_CAPACITY, TDW_TAB_CARGO, TDW_TAB_INFO, TDW_TAB_TOTALS, TRAIN_DETAILS_MAX_INDENT, TRAIN_DETAILS_MIN_INDENT, TrainDetailsCapacityTab(), TrainDetailsCargoTab(), TrainDetailsInfoTab(), GameSettings::vehicle, Vehicle::vehstatus, 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 90 of file train_gui.cpp.

References _current_text_dir, DIR_E, 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, and CursorVars::vehchain.

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

References CargoSummaryItem::amount, SmallVector< T, S >::Append(), Engine::CanCarryCargo(), CargoSummaryItem::capacity, Vehicle::cargo, CargoSummaryItem::cargo, Vehicle::cargo_cap, Vehicle::cargo_type, SmallVector< T, S >::Clear(), CargoList< Tinst >::Count(), SmallVector< T, S >::End(), SmallVector< T, S >::Find(), GetCargoSubtypeText(), Vehicle::GetEngine(), INVALID_CARGO, Vehicle::IsArticulatedPart(), SpecializedVehicle< T, Type >::Next(), CargoList< Tinst >::Source(), CargoSummaryItem::source, 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 289 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 306 of file train_gui.cpp.

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

Referenced by VehicleDetailsWindow::OnPaint().

static int HighlightDragPosition | ( | int | px,
|  | int | max_width,
|  | VehicleID | selection |
| ) |  |  | `[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.

Returns:
  The width of the highlight mark.

Definition at line 58 of file train_gui.cpp.

References _colour_gradient, _current_text_dir, SpecializedVehicle< Train, Type >::Get(), GfxFillRect(), Vehicle::HasArticulatedPart(), INVALID_VEHICLE, max(), min(), WD_FRAMERECT_BOTTOM, WD_FRAMERECT_LEFT, 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 235 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 188 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 213 of file train_gui.cpp.

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

Referenced by DrawTrainDetails().