OpenTTD Source  13.2.1
vehicle_gui.cpp File Reference
#include "stdafx.h"
#include "debug.h"
#include "company_func.h"
#include "gui.h"
#include "textbuf_gui.h"
#include "command_func.h"
#include "vehicle_gui_base.h"
#include "viewport_func.h"
#include "newgrf_text.h"
#include "newgrf_debug.h"
#include "roadveh.h"
#include "train.h"
#include "aircraft.h"
#include "depot_map.h"
#include "group_gui.h"
#include "strings_func.h"
#include "vehicle_func.h"
#include "autoreplace_gui.h"
#include "string_func.h"
#include "widgets/dropdown_func.h"
#include "timetable.h"
#include "articulated_vehicles.h"
#include "spritecache.h"
#include "core/geometry_func.hpp"
#include "company_base.h"
#include "engine_func.h"
#include "station_base.h"
#include "tilehighlight_func.h"
#include "zoom_func.h"
#include "depot_cmd.h"
#include "vehicle_cmd.h"
#include "order_cmd.h"
#include "roadveh_cmd.h"
#include "train_cmd.h"
#include "hotkeys.h"
#include "safeguards.h"

Go to the source code of this file.

Data Structures

struct  RefitOption
 Option to refit a vehicle chain. More...
 
struct  RefitWindow
 Refit cargo window. More...
 
struct  VehicleListWindow
 Window for the (old) vehicle listing. More...
 
struct  VehicleDetailsWindow
 Class for managing the vehicle details window. More...
 
struct  VehicleViewWindow
 Window manager class for viewing a vehicle. More...
 

Typedefs

typedef std::vector< RefitOptionSubtypeList
 List of refit subtypes associated to a cargo.
 

Enumerations

enum  VehicleCommandTranslation { VCT_CMD_START_STOP = 0, VCT_CMD_CLONE_VEH, VCT_CMD_TURN_AROUND }
 Command indices for the _vehicle_command_translation_table.
 

Functions

template<BaseVehicleListWindow::VehicleIndividualSortFunction func>
static bool VehicleIndividualToGroupSorterWrapper (GUIVehicleGroup const &a, GUIVehicleGroup const &b)
 Wrapper to convert a VehicleIndividualSortFunction to a VehicleGroupSortFunction.
 
uint CountDigitsForAllocatingSpace (uint number)
 Get the number of digits of space required for the given number. More...
 
uint GetUnitNumberDigits (VehicleList &vehicles)
 Get the number of digits the biggest unit number of a set of vehicles has. More...
 
static bool CDECL CargoFilter (const GUIVehicleGroup *vehgroup, const CargoID cid)
 Cargo filter functions. More...
 
void DepotSortList (VehicleList *list)
 
static void DrawVehicleProfitButton (Date age, Money display_profit_last_year, uint num_vehicles, int x, int y)
 draw the vehicle profit button in the vehicle list window.
 
byte GetBestFittingSubType (Vehicle *v_from, Vehicle *v_for, CargoID dest_cargo_type)
 Get the best fitting subtype when 'cloning'/'replacing' v_from with v_for. More...
 
static void DrawVehicleRefitWindow (const SubtypeList list[NUM_CARGO], const int sel[2], uint pos, uint rows, uint delta, const Rect &r)
 Draw the list of available refit options for a consist and highlight the selected refit option (if any). More...
 
void ShowVehicleRefitWindow (const Vehicle *v, VehicleOrderID order, Window *parent, bool auto_refit)
 Show the refit window for a vehicle. More...
 
uint ShowRefitOptionsList (int left, int right, int y, EngineID engine)
 Display list of cargo types of the engine, for the purchase information window.
 
StringID GetCargoSubtypeText (const Vehicle *v)
 Get the cargo subtype text from NewGRF for the vehicle details window.
 
static bool VehicleGroupLengthSorter (const GUIVehicleGroup &a, const GUIVehicleGroup &b)
 Sort vehicle groups by the number of vehicles in the group.
 
static bool VehicleGroupTotalProfitThisYearSorter (const GUIVehicleGroup &a, const GUIVehicleGroup &b)
 Sort vehicle groups by the total profit this year.
 
static bool VehicleGroupTotalProfitLastYearSorter (const GUIVehicleGroup &a, const GUIVehicleGroup &b)
 Sort vehicle groups by the total profit last year.
 
static bool VehicleGroupAverageProfitThisYearSorter (const GUIVehicleGroup &a, const GUIVehicleGroup &b)
 Sort vehicle groups by the average profit this year.
 
static bool VehicleGroupAverageProfitLastYearSorter (const GUIVehicleGroup &a, const GUIVehicleGroup &b)
 Sort vehicle groups by the average profit last year.
 
static bool VehicleNumberSorter (const Vehicle *const &a, const Vehicle *const &b)
 Sort vehicles by their number.
 
static bool VehicleNameSorter (const Vehicle *const &a, const Vehicle *const &b)
 Sort vehicles by their name.
 
static bool VehicleAgeSorter (const Vehicle *const &a, const Vehicle *const &b)
 Sort vehicles by their age.
 
static bool VehicleProfitThisYearSorter (const Vehicle *const &a, const Vehicle *const &b)
 Sort vehicles by this year profit.
 
static bool VehicleProfitLastYearSorter (const Vehicle *const &a, const Vehicle *const &b)
 Sort vehicles by last year profit.
 
static bool VehicleCargoSorter (const Vehicle *const &a, const Vehicle *const &b)
 Sort vehicles by their cargo.
 
static bool VehicleReliabilitySorter (const Vehicle *const &a, const Vehicle *const &b)
 Sort vehicles by their reliability.
 
static bool VehicleMaxSpeedSorter (const Vehicle *const &a, const Vehicle *const &b)
 Sort vehicles by their max speed.
 
static bool VehicleModelSorter (const Vehicle *const &a, const Vehicle *const &b)
 Sort vehicles by model.
 
static bool VehicleValueSorter (const Vehicle *const &a, const Vehicle *const &b)
 Sort vehicles by their value.
 
static bool VehicleLengthSorter (const Vehicle *const &a, const Vehicle *const &b)
 Sort vehicles by their length.
 
static bool VehicleTimeToLiveSorter (const Vehicle *const &a, const Vehicle *const &b)
 Sort vehicles by the time they can still live.
 
static bool VehicleTimetableDelaySorter (const Vehicle *const &a, const Vehicle *const &b)
 Sort vehicles by the timetable delay.
 
void InitializeGUI ()
 
static void ChangeVehicleWindow (WindowClass window_class, VehicleID from_index, VehicleID to_index)
 Assign a vehicle window a new vehicle. More...
 
void ChangeVehicleViewWindow (VehicleID from_index, VehicleID to_index)
 Report a change in vehicle IDs (due to autoreplace) to affected vehicle windows. More...
 
static void DrawSmallOrderList (const Vehicle *v, int left, int right, int y, uint order_arrow_width, VehicleOrderID start)
 
static void DrawSmallOrderList (const Order *order, int left, int right, int y, uint order_arrow_width)
 Draw small order list in the vehicle GUI, but without the little black arrow. More...
 
void DrawVehicleImage (const Vehicle *v, const Rect &r, VehicleID selection, EngineImageType image_type, int skip)
 Draws an image of a vehicle chain. More...
 
uint GetVehicleListHeight (VehicleType type, uint divisor)
 Get the height of a vehicle in the vehicle list GUIs. More...
 
static void ShowVehicleListWindowLocal (CompanyID company, VehicleListType vlt, VehicleType vehicle_type, uint32 unique_number)
 
void ShowVehicleListWindow (CompanyID company, VehicleType vehicle_type)
 
void ShowVehicleListWindow (const Vehicle *v)
 
void ShowVehicleListWindow (CompanyID company, VehicleType vehicle_type, StationID station)
 
void ShowVehicleListWindow (CompanyID company, VehicleType vehicle_type, TileIndex depot_tile)
 
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 vscroll_cap, TrainDetailsWindowTabs det_tab)
 Draw the details for the given vehicle at the given position. More...
 
void DrawRoadVehDetails (const Vehicle *v, const Rect &r)
 Draw the details for the given vehicle at the given position. More...
 
void DrawShipDetails (const Vehicle *v, const Rect &r)
 Draw the details for the given vehicle at the given position. More...
 
void DrawAircraftDetails (const Aircraft *v, const Rect &r)
 Draw the details for the given vehicle at the given position. More...
 
static void ShowVehicleDetailsWindow (const Vehicle *v)
 Shows the vehicle details window of the given vehicle.
 
void CcStartStopVehicle (Commands cmd, const CommandCost &result, VehicleID veh_id, bool)
 This is the Callback method after attempting to start/stop a vehicle. More...
 
void StartStopVehicle (const Vehicle *v, bool texteffect)
 Executes CMD_START_STOP_VEHICLE for given vehicle. More...
 
static bool IsVehicleRefitable (const Vehicle *v)
 Checks whether the vehicle may be refitted at the moment.
 
void ShowVehicleViewWindow (const Vehicle *v)
 Shows the vehicle view window of the given vehicle.
 
bool VehicleClicked (const Vehicle *v)
 Dispatch a "vehicle selected" event if any window waits for it. More...
 
bool VehicleClicked (VehicleList::const_iterator begin, VehicleList::const_iterator end)
 Dispatch a "vehicle group selected" event if any window waits for it. More...
 
bool VehicleClicked (const GUIVehicleGroup &vehgroup)
 Dispatch a "vehicle group selected" event if any window waits for it. More...
 
void StopGlobalFollowVehicle (const Vehicle *v)
 
void CcBuildPrimaryVehicle (Commands cmd, const CommandCost &result, VehicleID new_veh_id, uint, uint16, CargoArray)
 This is the Callback method after the construction attempt of a primary vehicle. More...
 
int GetSingleVehicleWidth (const Vehicle *v, EngineImageType image_type)
 Get the width of a vehicle (part) in pixels. More...
 
int GetVehicleWidth (const Vehicle *v, EngineImageType image_type)
 Get the width of a vehicle (including all parts of the consist) in pixels. More...
 
void SetMouseCursorVehicle (const Vehicle *v, EngineImageType image_type)
 Set the mouse cursor to look like a vehicle. More...
 

Variables

BaseVehicleListWindow::GroupBy _grouping [VLT_END][VEH_COMPANY_END]
 
Sorting _sorting [BaseVehicleListWindow::GB_END]
 
static BaseVehicleListWindow::VehicleIndividualSortFunction VehicleNumberSorter
 
static BaseVehicleListWindow::VehicleIndividualSortFunction VehicleNameSorter
 
static BaseVehicleListWindow::VehicleIndividualSortFunction VehicleAgeSorter
 
static BaseVehicleListWindow::VehicleIndividualSortFunction VehicleProfitThisYearSorter
 
static BaseVehicleListWindow::VehicleIndividualSortFunction VehicleProfitLastYearSorter
 
static BaseVehicleListWindow::VehicleIndividualSortFunction VehicleCargoSorter
 
static BaseVehicleListWindow::VehicleIndividualSortFunction VehicleReliabilitySorter
 
static BaseVehicleListWindow::VehicleIndividualSortFunction VehicleMaxSpeedSorter
 
static BaseVehicleListWindow::VehicleIndividualSortFunction VehicleModelSorter
 
static BaseVehicleListWindow::VehicleIndividualSortFunction VehicleValueSorter
 
static BaseVehicleListWindow::VehicleIndividualSortFunction VehicleLengthSorter
 
static BaseVehicleListWindow::VehicleIndividualSortFunction VehicleTimeToLiveSorter
 
static BaseVehicleListWindow::VehicleIndividualSortFunction VehicleTimetableDelaySorter
 
static BaseVehicleListWindow::VehicleGroupSortFunction VehicleGroupLengthSorter
 
static BaseVehicleListWindow::VehicleGroupSortFunction VehicleGroupTotalProfitThisYearSorter
 
static BaseVehicleListWindow::VehicleGroupSortFunction VehicleGroupTotalProfitLastYearSorter
 
static BaseVehicleListWindow::VehicleGroupSortFunction VehicleGroupAverageProfitThisYearSorter
 
static BaseVehicleListWindow::VehicleGroupSortFunction VehicleGroupAverageProfitLastYearSorter
 
static GUIVehicleGroupList::FilterFunction *const _filter_funcs []
 
static const Vehicle_last_vehicle [2] = { nullptr, nullptr }
 
static const uint MAX_REFIT_CYCLE = 256
 Maximum number of refit cycles we try, to prevent infinite loops. More...
 
static const NWidgetPart _nested_vehicle_refit_widgets []
 
static WindowDesc _vehicle_refit_desc (WDP_AUTO, "view_vehicle_refit", 240, 174, WC_VEHICLE_REFIT, WC_VEHICLE_VIEW, WDF_CONSTRUCTION, _nested_vehicle_refit_widgets, lengthof(_nested_vehicle_refit_widgets))
 
static const NWidgetPart _nested_vehicle_list []
 
static WindowDesc _vehicle_list_other_desc (WDP_AUTO, "list_vehicles", 260, 246, WC_INVALID, WC_NONE, 0, _nested_vehicle_list, lengthof(_nested_vehicle_list))
 
static WindowDesc _vehicle_list_train_desc (WDP_AUTO, "list_vehicles_train", 325, 246, WC_TRAINS_LIST, WC_NONE, 0, _nested_vehicle_list, lengthof(_nested_vehicle_list))
 
static const NWidgetPart _nested_nontrain_vehicle_details_widgets []
 Vehicle details widgets (other than train). More...
 
static const NWidgetPart _nested_train_vehicle_details_widgets []
 Train details widgets.
 
static StringID _service_interval_dropdown []
 
static WindowDesc _train_vehicle_details_desc (WDP_AUTO, "view_vehicle_details_train", 405, 178, WC_VEHICLE_DETAILS, WC_VEHICLE_VIEW, 0, _nested_train_vehicle_details_widgets, lengthof(_nested_train_vehicle_details_widgets))
 Vehicle details window descriptor.
 
static WindowDesc _nontrain_vehicle_details_desc (WDP_AUTO, "view_vehicle_details", 405, 113, WC_VEHICLE_DETAILS, WC_VEHICLE_VIEW, 0, _nested_nontrain_vehicle_details_widgets, lengthof(_nested_nontrain_vehicle_details_widgets))
 Vehicle details window descriptor for other vehicles than a train.
 
static const NWidgetPart _nested_vehicle_view_widgets []
 Vehicle view widgets.
 
static const ZoomLevel _vehicle_view_zoom_levels []
 Zoom levels for vehicle views indexed by vehicle type. More...
 
static const int VV_INITIAL_VIEWPORT_WIDTH = 226
 
static const int VV_INITIAL_VIEWPORT_HEIGHT = 84
 
static const int VV_INITIAL_VIEWPORT_HEIGHT_TRAIN = 102
 
static const StringID _vehicle_msg_translation_table [][4]
 Command codes for the shared buttons indexed by VehicleCommandTranslation and vehicle type. More...
 
static Hotkey vehicleview_hotkeys []
 
static WindowDesc _vehicle_view_desc (WDP_AUTO, "view_vehicle", 250, 116, WC_VEHICLE_VIEW, WC_NONE, 0, _nested_vehicle_view_widgets, lengthof(_nested_vehicle_view_widgets), &VehicleViewWindow::hotkeys)
 Vehicle view window descriptor for all vehicles but trains.
 
static WindowDesc _train_view_desc (WDP_AUTO, "view_vehicle_train", 250, 134, WC_VEHICLE_VIEW, WC_NONE, 0, _nested_vehicle_view_widgets, lengthof(_nested_vehicle_view_widgets), &VehicleViewWindow::hotkeys)
 Vehicle view window descriptor for trains. More...
 

Detailed Description

The base GUI for all vehicles.

Definition in file vehicle_gui.cpp.

Function Documentation

◆ CargoFilter()

static bool CDECL CargoFilter ( const GUIVehicleGroup vehgroup,
const CargoID  cid 
)
static

Cargo filter functions.

Check whether a vehicle can carry a specific cargo.

Parameters
vehgroupThe vehicle group which contains the vehicle to be checked
cidThe cargo what we are looking for
Returns
Whether the vehicle can carry the specified cargo or not

Definition at line 238 of file vehicle_gui.cpp.

References CC_PASSENGERS, BaseVehicleListWindow::CF_ANY, BaseVehicleListWindow::CF_FREIGHT, BaseVehicleListWindow::CF_NONE, IsCargoInClass(), and Vehicle::Next().

◆ CcBuildPrimaryVehicle()

void CcBuildPrimaryVehicle ( Commands  cmd,
const CommandCost result,
VehicleID  new_veh_id,
uint  ,
uint16  ,
CargoArray   
)

This is the Callback method after the construction attempt of a primary vehicle.

Parameters
cmdunused
resultindicates completion (or not) of the operation
new_veh_idID of the new vehicle.

Definition at line 3359 of file vehicle_gui.cpp.

◆ CcStartStopVehicle()

void CcStartStopVehicle ( Commands  cmd,
const CommandCost result,
VehicleID  veh_id,
bool   
)

This is the Callback method after attempting to start/stop a vehicle.

Parameters
cmdunused
resultthe result of the start/stop command
veh_idVehicle ID.

Definition at line 2789 of file vehicle_gui.cpp.

◆ ChangeVehicleViewWindow()

void ChangeVehicleViewWindow ( VehicleID  from_index,
VehicleID  to_index 
)

Report a change in vehicle IDs (due to autoreplace) to affected vehicle windows.

Parameters
from_indexthe old vehicle ID
to_indexthe new vehicle ID

Definition at line 1482 of file vehicle_gui.cpp.

References ChangeVehicleWindow(), WC_VEHICLE_DETAILS, WC_VEHICLE_ORDERS, WC_VEHICLE_REFIT, WC_VEHICLE_TIMETABLE, and WC_VEHICLE_VIEW.

◆ ChangeVehicleWindow()

static void ChangeVehicleWindow ( WindowClass  window_class,
VehicleID  from_index,
VehicleID  to_index 
)
inlinestatic

Assign a vehicle window a new vehicle.

Parameters
window_classWindowClass to search for
from_indexthe old vehicle ID
to_indexthe new vehicle ID

Definition at line 1459 of file vehicle_gui.cpp.

References FindWindowById(), ViewportData::follow_vehicle, Window::viewport, and Window::window_number.

Referenced by ChangeVehicleViewWindow().

◆ CountDigitsForAllocatingSpace()

uint CountDigitsForAllocatingSpace ( uint  number)

Get the number of digits of space required for the given number.

Parameters
numberThe number.
Returns
The number of digits to allocate space for.

Definition at line 153 of file vehicle_gui.cpp.

Referenced by GetUnitNumberDigits().

◆ DrawAircraftDetails()

void DrawAircraftDetails ( const Aircraft v,
const Rect r 
)

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

Parameters
vcurrent vehicle
rthe Rect to draw within

Definition at line 30 of file aircraft_gui.cpp.

Referenced by VehicleDetailsWindow::DrawVehicleDetails().

◆ DrawRoadVehDetails()

void DrawRoadVehDetails ( const Vehicle v,
const Rect r 
)

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

Parameters
vcurrent vehicle
rthe Rect to draw within

Definition at line 28 of file roadveh_gui.cpp.

Referenced by VehicleDetailsWindow::DrawVehicleDetails().

◆ DrawShipDetails()

void DrawShipDetails ( const Vehicle v,
const Rect r 
)

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

Parameters
vcurrent vehicle
rthe Rect to draw within

Definition at line 62 of file ship_gui.cpp.

Referenced by VehicleDetailsWindow::DrawVehicleDetails().

◆ DrawSmallOrderList()

static void DrawSmallOrderList ( const Order order,
int  left,
int  right,
int  y,
uint  order_arrow_width 
)
static

Draw small order list in the vehicle GUI, but without the little black arrow.

This is used for shared order groups.

Definition at line 1583 of file vehicle_gui.cpp.

◆ DrawTrainDetails()

void DrawTrainDetails ( const Train v,
const Rect r,
int  vscroll_pos,
uint16  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 363 of file train_gui.cpp.

References _current_text_dir, DIR_E, DIR_W, FONT_HEIGHT_NORMAL, Rect::Height(), TD_RTL, and TDW_TAB_TOTALS.

Referenced by VehicleDetailsWindow::DrawVehicleDetails().

◆ DrawVehicleImage()

void DrawVehicleImage ( const Vehicle v,
const Rect r,
VehicleID  selection,
EngineImageType  image_type,
int  skip 
)

Draws an image of a vehicle chain.

Parameters
vFront vehicle
rRect to draw at
selectionSelected vehicle to draw a frame around
skipNumber of pixels to skip at the front (for scrolling)

Definition at line 1608 of file vehicle_gui.cpp.

References DrawAircraftImage(), DrawRoadVehImage(), DrawShipImage(), DrawTrainImage(), SpecializedVehicle< Train, Type >::From(), BaseVehicle::type, VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, and VEH_TRAIN.

Referenced by RefitWindow::DrawWidget().

◆ DrawVehicleRefitWindow()

static void DrawVehicleRefitWindow ( const SubtypeList  list[NUM_CARGO],
const int  sel[2],
uint  pos,
uint  rows,
uint  delta,
const Rect r 
)
static

Draw the list of available refit options for a consist and highlight the selected refit option (if any).

Parameters
listList of subtype options for each (sorted) cargo.
selSelected refit cargo-type in the window
posPosition of the selected item in caller widow
rowsNumber of rows(capacity) in caller window
deltaStep height in caller window
rRectangle of the matrix widget.

Definition at line 540 of file vehicle_gui.cpp.

References _current_text_dir, GetSpriteSize(), WidgetDimensions::scaled, Rect::Shrink(), and TD_RTL.

◆ GetBestFittingSubType()

byte GetBestFittingSubType ( Vehicle v_from,
Vehicle v_for,
CargoID  dest_cargo_type 
)

Get the best fitting subtype when 'cloning'/'replacing' v_from with v_for.

All articulated parts of both vehicles are tested to find a possibly shared subtype. For v_for only vehicle refittable to dest_cargo_type are considered.

Parameters
v_fromthe vehicle to match the subtype from
v_forthe vehicle to get the subtype for
dest_cargo_typeDestination cargo type.
Returns
the best sub type

Definition at line 439 of file vehicle_gui.cpp.

References EngineInfo::callback_mask, Engine::CanCarryCargo(), CBM_VEHICLE_CARGO_SUFFIX, GetCargoSubtypeText(), Vehicle::GetEngine(), Vehicle::GetFirstEnginePart(), Vehicle::GetNextArticulatedPart(), Vehicle::HasArticulatedPart(), HasBit(), include(), and MAX_REFIT_CYCLE.

Referenced by LinkRefresher::HandleRefit().

◆ GetSingleVehicleWidth()

int GetSingleVehicleWidth ( const Vehicle v,
EngineImageType  image_type 
)

◆ GetTrainDetailsWndVScroll()

◆ GetUnitNumberDigits()

uint GetUnitNumberDigits ( VehicleList vehicles)

Get the number of digits the biggest unit number of a set of vehicles has.

Parameters
vehiclesThe list of vehicles.
Returns
The number of digits to allocate space for.

Definition at line 172 of file vehicle_gui.cpp.

References CountDigitsForAllocatingSpace().

◆ GetVehicleListHeight()

uint GetVehicleListHeight ( VehicleType  type,
uint  divisor 
)

Get the height of a vehicle in the vehicle list GUIs.

Parameters
typethe vehicle type to look at
divisorthe resulting height must be dividable by this
Returns
the height

Definition at line 1625 of file vehicle_gui.cpp.

References FONT_HEIGHT_SMALL, GetVehicleHeight(), WidgetDimensions::matrix, WidgetDimensions::scaled, ScaleGUITrad(), VEH_SHIP, and RectPadding::Vertical().

Referenced by VehicleGroupWindow::UpdateWidgetSize(), and VehicleListWindow::UpdateWidgetSize().

◆ GetVehicleWidth()

int GetVehicleWidth ( const Vehicle v,
EngineImageType  image_type 
)

Get the width of a vehicle (including all parts of the consist) in pixels.

Parameters
vVehicle to get the width for.
Returns
Width of the vehicle.

Definition at line 3396 of file vehicle_gui.cpp.

References GetSingleVehicleWidth(), SpecializedVehicle< T, Type >::Next(), BaseVehicle::type, VEH_ROAD, and VEH_TRAIN.

Referenced by RefitWindow::OnResize().

◆ SetMouseCursorVehicle()

void SetMouseCursorVehicle ( const Vehicle v,
EngineImageType  image_type 
)

Set the mouse cursor to look like a vehicle.

Parameters
vVehicle
image_typeType of vehicle image to use.

Definition at line 3414 of file vehicle_gui.cpp.

References _current_text_dir, and TD_RTL.

◆ ShowVehicleRefitWindow()

void ShowVehicleRefitWindow ( const Vehicle v,
VehicleOrderID  order,
Window parent,
bool  auto_refit 
)

Show the refit window for a vehicle.

Parameters
*vThe vehicle to show the refit window for
orderof the vehicle to assign refit to, or INVALID_VEH_ORDER_ID to refit the vehicle now
parentthe parent window of the refit window
auto_refitChoose cargo for auto-refitting

Definition at line 1243 of file vehicle_gui.cpp.

References CloseWindowById(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, and WC_VEHICLE_REFIT.

Referenced by OrdersWindow::OrderClick_Refit().

◆ StartStopVehicle()

void StartStopVehicle ( const Vehicle v,
bool  texteffect 
)

Executes CMD_START_STOP_VEHICLE for given vehicle.

Parameters
vVehicle to start/stop
texteffectShould a texteffect be shown?

Definition at line 2806 of file vehicle_gui.cpp.

References _vehicle_msg_translation_table, and Vehicle::IsPrimaryVehicle().

Referenced by VehicleViewWindow::OnClick().

◆ VehicleClicked() [1/3]

bool VehicleClicked ( const GUIVehicleGroup vehgroup)

Dispatch a "vehicle group selected" event if any window waits for it.

Parameters
vehgroupthe GUIVehicleGroup representing the vehicle group
Returns
did any window accept vehicle group selection?

Definition at line 3338 of file vehicle_gui.cpp.

References VehicleClicked(), GUIVehicleGroup::vehicles_begin, and GUIVehicleGroup::vehicles_end.

◆ VehicleClicked() [2/3]

bool VehicleClicked ( const Vehicle v)

Dispatch a "vehicle selected" event if any window waits for it.

Parameters
vselected vehicle;
Returns
did any window accept vehicle selection?

Definition at line 3305 of file vehicle_gui.cpp.

Referenced by VehicleClicked().

◆ VehicleClicked() [3/3]

bool VehicleClicked ( VehicleList::const_iterator  begin,
VehicleList::const_iterator  end 
)

Dispatch a "vehicle group selected" event if any window waits for it.

Parameters
beginiterator to the start of the range of vehicles
enditerator to the end of the range of vehicles
Returns
did any window accept vehicle group selection?

Definition at line 3322 of file vehicle_gui.cpp.

Variable Documentation

◆ _filter_funcs

GUIVehicleGroupList::FilterFunction* const _filter_funcs[]
static
Initial value:
= {
}

Definition at line 272 of file vehicle_gui.cpp.

◆ _nested_nontrain_vehicle_details_widgets

const NWidgetPart _nested_nontrain_vehicle_details_widgets[]
static
Initial value:
= {
NWidget(WWT_CLOSEBOX, COLOUR_GREY),
NWidget(WWT_CAPTION, COLOUR_GREY, WID_VD_CAPTION), SetDataTip(STR_VEHICLE_DETAILS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_SHADEBOX, COLOUR_GREY),
NWidget(WWT_DEFSIZEBOX, COLOUR_GREY),
NWidget(WWT_STICKYBOX, COLOUR_GREY),
SetDataTip(AWV_DECREASE, STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP),
SetDataTip(AWV_INCREASE, STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP),
SetDataTip(STR_EMPTY, STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP),
NWidget(WWT_RESIZEBOX, COLOUR_GREY),
}

Vehicle details widgets (other than train).

Definition at line 2230 of file vehicle_gui.cpp.

◆ _nested_vehicle_refit_widgets

const NWidgetPart _nested_vehicle_refit_widgets[]
static
Initial value:

Definition at line 1203 of file vehicle_gui.cpp.

◆ _service_interval_dropdown

StringID _service_interval_dropdown[]
static
Initial value:
= {
STR_VEHICLE_DETAILS_DEFAULT,
STR_VEHICLE_DETAILS_DAYS,
STR_VEHICLE_DETAILS_PERCENT,
}

Definition at line 2295 of file vehicle_gui.cpp.

◆ _train_view_desc

WindowDesc _train_view_desc(WDP_AUTO, "view_vehicle_train", 250, 134, WC_VEHICLE_VIEW, WC_NONE, 0, _nested_vehicle_view_widgets, lengthof(_nested_vehicle_view_widgets), &VehicleViewWindow::hotkeys)
static

Vehicle view window descriptor for trains.

Only minimum_height and default_height are different for train view.

Referenced by ShowVehicleViewWindow().

◆ _vehicle_msg_translation_table

const StringID _vehicle_msg_translation_table[][4]
static
Initial value:
= {
{
STR_ERROR_CAN_T_STOP_START_TRAIN,
STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE,
STR_ERROR_CAN_T_STOP_START_SHIP,
STR_ERROR_CAN_T_STOP_START_AIRCRAFT
},
{
STR_ERROR_CAN_T_BUY_TRAIN,
STR_ERROR_CAN_T_BUY_ROAD_VEHICLE,
STR_ERROR_CAN_T_BUY_SHIP,
STR_ERROR_CAN_T_BUY_AIRCRAFT
},
{
STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN,
STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN,
},
}

Command codes for the shared buttons indexed by VehicleCommandTranslation and vehicle type.

Definition at line 2762 of file vehicle_gui.cpp.

Referenced by StartStopVehicle().

◆ _vehicle_view_zoom_levels

const ZoomLevel _vehicle_view_zoom_levels[]
static
Initial value:

Zoom levels for vehicle views indexed by vehicle type.

Definition at line 2742 of file vehicle_gui.cpp.

◆ MAX_REFIT_CYCLE

const uint MAX_REFIT_CYCLE = 256
static

Maximum number of refit cycles we try, to prevent infinite loops.

And we store only a byte anyway

Definition at line 428 of file vehicle_gui.cpp.

Referenced by RefitWindow::BuildRefitList(), and GetBestFittingSubType().

◆ vehicleview_hotkeys

Hotkey vehicleview_hotkeys[]
static
Initial value:
= {
Hotkey('H', "honk", WID_VV_HONK_HORN),
HOTKEY_LIST_END
}

Definition at line 3267 of file vehicle_gui.cpp.

WID_VR_MATRIX
@ WID_VR_MATRIX
Options to refit to.
Definition: vehicle_widget.h:40
SetScrollbar
static NWidgetPart SetScrollbar(int index)
Attach a scrollbar to a widget.
Definition: widget_type.h:1210
WWT_STICKYBOX
@ WWT_STICKYBOX
Sticky box (at top-right of a window, after WWT_DEFSIZEBOX)
Definition: widget_type.h:64
WidgetDimensions::unscaled
static const WidgetDimensions unscaled
Unscaled widget dimensions.
Definition: window_gui.h:67
NWID_HSCROLLBAR
@ NWID_HSCROLLBAR
Horizontal scrollbar.
Definition: widget_type.h:81
WWT_CAPTION
@ WWT_CAPTION
Window caption (window title between closebox and stickybox)
Definition: widget_type.h:59
WID_VR_CAPTION
@ WID_VR_CAPTION
Caption of window.
Definition: vehicle_widget.h:35
WWT_DEFSIZEBOX
@ WWT_DEFSIZEBOX
Default window size box (at top-right of a window, between WWT_SHADEBOX and WWT_STICKYBOX)
Definition: widget_type.h:63
NWID_HORIZONTAL
@ NWID_HORIZONTAL
Horizontal container.
Definition: widget_type.h:73
WWT_MATRIX
@ WWT_MATRIX
Grid of rows and columns.
Definition: widget_type.h:57
WID_VD_SERVICE_INTERVAL_DROPDOWN
@ WID_VD_SERVICE_INTERVAL_DROPDOWN
Dropdown to select default/days/percent service interval.
Definition: vehicle_widget.h:52
SetResize
static NWidgetPart SetResize(int16 dx, int16 dy)
Widget part function for setting the resize step.
Definition: widget_type.h:997
WWT_PUSHARROWBTN
@ WWT_PUSHARROWBTN
Normal push-button (no toggle button) with arrow caption.
Definition: widget_type.h:106
SetDataTip
static NWidgetPart SetDataTip(uint32 data, StringID tip)
Widget part function for setting the data and tooltip.
Definition: widget_type.h:1111
WID_VV_HONK_HORN
@ WID_VV_HONK_HORN
Honk the vehicles horn (not drawn on UI, only used for hotkey).
Definition: vehicle_widget.h:30
WID_VR_REFIT
@ WID_VR_REFIT
Perform the refit.
Definition: vehicle_widget.h:43
WID_VR_SHOW_HSCROLLBAR
@ WID_VR_SHOW_HSCROLLBAR
Selection widget for the horizontal scrollbar.
Definition: vehicle_widget.h:37
WID_VR_HSCROLLBAR
@ WID_VR_HSCROLLBAR
Horizontal scrollbar or the vehicle display.
Definition: vehicle_widget.h:38
WID_VD_MIDDLE_DETAILS
@ WID_VD_MIDDLE_DETAILS
Details for non-trains.
Definition: vehicle_widget.h:54
ZOOM_LVL_ROADVEH
@ ZOOM_LVL_ROADVEH
Default zoom level for the road vehicle view.
Definition: zoom_type.h:40
WWT_PUSHTXTBTN
@ WWT_PUSHTXTBTN
Normal push-button (no toggle button) with text caption.
Definition: widget_type.h:104
CargoFilter
static bool CDECL CargoFilter(const GUIVehicleGroup *vehgroup, const CargoID cid)
Cargo filter functions.
Definition: vehicle_gui.cpp:238
SetMatrixDataTip
static NWidgetPart SetMatrixDataTip(uint8 cols, uint8 rows, StringID tip)
Widget part function for setting the data and tooltip of WWT_MATRIX widgets.
Definition: widget_type.h:1129
WID_VD_TOP_DETAILS
@ WID_VD_TOP_DETAILS
Panel with generic details.
Definition: vehicle_widget.h:49
ZOOM_LVL_AIRCRAFT
@ ZOOM_LVL_AIRCRAFT
Default zoom level for the aircraft view.
Definition: zoom_type.h:37
ZOOM_LVL_SHIP
@ ZOOM_LVL_SHIP
Default zoom level for the ship view.
Definition: zoom_type.h:38
WID_VR_SCROLLBAR
@ WID_VR_SCROLLBAR
Scrollbar for the refit options.
Definition: vehicle_widget.h:41
WID_VR_INFO
@ WID_VR_INFO
Information about the currently selected refit option.
Definition: vehicle_widget.h:42
WID_VD_CAPTION
@ WID_VD_CAPTION
Caption of window.
Definition: vehicle_widget.h:48
NWID_VERTICAL
@ NWID_VERTICAL
Vertical container.
Definition: widget_type.h:75
WID_VD_DECREASE_SERVICING_INTERVAL
@ WID_VD_DECREASE_SERVICING_INTERVAL
Decrease the servicing interval.
Definition: vehicle_widget.h:51
WWT_CLOSEBOX
@ WWT_CLOSEBOX
Close box (at top-left of a window)
Definition: widget_type.h:67
WWT_RESIZEBOX
@ WWT_RESIZEBOX
Resize box (normally at bottom-right of a window)
Definition: widget_type.h:66
EndContainer
static NWidgetPart EndContainer()
Widget part function for denoting the end of a container (horizontal, vertical, WWT_FRAME,...
Definition: widget_type.h:1096
NWID_VSCROLLBAR
@ NWID_VSCROLLBAR
Vertical scrollbar.
Definition: widget_type.h:82
NWidget
static NWidgetPart NWidget(WidgetType tp, Colours col, int16 idx=-1)
Widget part function for starting a new 'real' widget.
Definition: widget_type.h:1229
SetMinimalSize
static NWidgetPart SetMinimalSize(int16 x, int16 y)
Widget part function for setting the minimal size.
Definition: widget_type.h:1014
WID_VR_VEHICLE_PANEL_DISPLAY
@ WID_VR_VEHICLE_PANEL_DISPLAY
Display with a representation of the vehicle to refit.
Definition: vehicle_widget.h:36
WWT_PANEL
@ WWT_PANEL
Simple depressed panel.
Definition: widget_type.h:48
ZOOM_LVL_TRAIN
@ ZOOM_LVL_TRAIN
Default zoom level for the train view.
Definition: zoom_type.h:39
SetFill
static NWidgetPart SetFill(uint fill_x, uint fill_y)
Widget part function for setting filling.
Definition: widget_type.h:1080
NWID_SELECTION
@ NWID_SELECTION
Stacked widgets, only one visible at a time (eg in a panel with tabs).
Definition: widget_type.h:78
WID_VD_INCREASE_SERVICING_INTERVAL
@ WID_VD_INCREASE_SERVICING_INTERVAL
Increase the servicing interval.
Definition: vehicle_widget.h:50
AWV_INCREASE
@ AWV_INCREASE
Arrow to the right or in case of RTL to the left.
Definition: widget_type.h:36
WID_VD_SERVICING_INTERVAL
@ WID_VD_SERVICING_INTERVAL
Information about the servicing interval.
Definition: vehicle_widget.h:53
WID_VR_SELECT_HEADER
@ WID_VR_SELECT_HEADER
Header with question about the cargo to carry.
Definition: vehicle_widget.h:39
WWT_TEXTBTN
@ WWT_TEXTBTN
(Toggle) Button with text
Definition: widget_type.h:53
INVALID_STRING_ID
static const StringID INVALID_STRING_ID
Constant representing an invalid string (16bit in case it is used in savegames)
Definition: strings_type.h:17
AWV_DECREASE
@ AWV_DECREASE
Arrow to the left or in case of RTL to the right.
Definition: widget_type.h:35
SetMinimalTextLines
static NWidgetPart SetMinimalTextLines(uint8 lines, uint8 spacing, FontSize size=FS_NORMAL)
Widget part function for setting the minimal text lines.
Definition: widget_type.h:1032
WWT_DROPDOWN
@ WWT_DROPDOWN
Drop down list.
Definition: widget_type.h:68
Hotkey
All data for a single hotkey.
Definition: hotkeys.h:22
WWT_SHADEBOX
@ WWT_SHADEBOX
Shade box (at top-right of a window, between WWT_DEBUGBOX and WWT_DEFSIZEBOX)
Definition: widget_type.h:62