OpenTTD Source  20241108-master-g80f628063a
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 "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< CargoSummaryItemCargoSummary
 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  cmd,
const CommandCost result,
VehicleID  new_veh_id,
uint  ,
uint16_t  ,
CargoArray  ,
TileIndex  tile,
EngineID  ,
bool  ,
CargoID  ,
ClientID   
)

Callback for building wagons.

Parameters
resultThe result of the command.
new_veh_idID of the ne vehicle.
tileThe 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
vcurrent vehicle
rthe Rect to draw within
vscroll_posPosition of scrollbar
vscroll_capNumber of lines currently displayed
det_tabSelected details tab

Definition at line 362 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
vFront vehicle
rRect to draw at
selectionSelected vehicle to draw a frame around
skipNumber of pixels to skip at the front (for scrolling)
drag_destThe 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
vVehicle to process
summarySpace for the result

Definition at line 279 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
vthe vehicle to get the length of.
Returns
the length in pixels.

Definition at line 311 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 
)

◆ 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
pxThe current x position to draw from.
max_widthThe maximum space available to draw.
yThe vertical centre position to draw from.
selectionSelected vehicle that is dragged.
chainWhether 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
itemData to draw
leftThe left most coordinate to draw
rightThe right most coordinate to draw
yThe y coordinate

Definition at line 257 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
itemData to draw
leftThe left most coordinate to draw
rightThe right most coordinate to draw
yThe y coordinate

Definition at line 211 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
vcurrent vehicle
leftThe left most coordinate to draw
rightThe right most coordinate to draw
yThe y coordinate

Definition at line 235 of file train_gui.cpp.