OpenTTD Source: src/vehicle_gui.h Source File

OpenTTD Source 15.0-RC2

vehicle_gui.h
Go to the documentation of this file.
1/*
2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
6 */
7
10#ifndef VEHICLE_GUI_H
11#define VEHICLE_GUI_H
12
13#include "window_type.h"
14#include "vehicle_type.h"
15#include "vehicle_gui_base.h"
16#include "vehiclelist.h"
17#include "order_type.h"
18#include "station_type.h"
19#include "engine_type.h"
20#include "company_type.h"
21
22void ShowVehicleRefitWindow(const Vehicle *v, VehicleOrderID order, Window *parent, bool auto_refit = false);
23
25 enum TrainDetailsWindowTabs : uint8_t {
26 TDW_TAB_CARGO = 0,
27 TDW_TAB_INFO,
28 TDW_TAB_CAPACITY,
29 TDW_TAB_TOTALS,
30};
31 DECLARE_ENUM_AS_ADDABLE(TrainDetailsWindowTabs)
32
33
34enum VehicleInvalidateWindowData : int {
35 VIWD_REMOVE_ALL_ORDERS = -1,
36 VIWD_MODIFY_ORDERS = -2,
37 VIWD_CONSIST_CHANGED = -3,
38 VIWD_AUTOREPLACE = -4,
39};
40
42 struct TestedEngineDetails {
43 Money cost;
44 CargoType cargo;
45 uint capacity;
46 uint16_t mail_capacity;
47 CargoArray all_capacities{};
48
49 void FillDefaultCapacities(const Engine *e);
50};
51
52int DrawVehiclePurchaseInfo(int left, int right, int y, EngineID engine_number, TestedEngineDetails &te);
53
54void DrawTrainImage(const Train *v, const Rect &r, VehicleID selection, EngineImageType image_type, int skip, VehicleID drag_dest = VehicleID::Invalid());
55void DrawRoadVehImage(const Vehicle *v, const Rect &r, VehicleID selection, EngineImageType image_type, int skip = 0);
56void DrawShipImage(const Vehicle *v, const Rect &r, VehicleID selection, EngineImageType image_type);
57void DrawAircraftImage(const Vehicle *v, const Rect &r, VehicleID selection, EngineImageType image_type);
58
59void ShowBuildVehicleWindow(TileIndex tile, VehicleType type);
60
61uint ShowRefitOptionsList(int left, int right, int y, EngineID engine);
62 StringID GetCargoSubtypeText(const Vehicle *v);
63
64void ShowVehicleListWindow(const Vehicle *v);
65void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type);
66void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type, StationID station);
67void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type, TileIndex depot_tile);
68
74 inline uint GetVehicleHeight(VehicleType type)
75{
76 return (type == VEH_TRAIN || type == VEH_ROAD) ? 14 : 24;
77}
78
79int GetSingleVehicleWidth(const Vehicle *v, EngineImageType image_type);
80int GetVehicleWidth(const Vehicle *v, EngineImageType image_type);
81
83 struct VehicleCellSize {
84 uint height;
85 uint extend_left;
86 uint extend_right;
87};
88
89 VehicleCellSize GetVehicleImageCellSize(VehicleType type, EngineImageType image_type);
90
97 inline WindowClass GetWindowClassForVehicleType(VehicleType vt)
98{
99 switch (vt) {
100 default: NOT_REACHED();
101 case VEH_TRAIN: return WC_TRAINS_LIST;
102 case VEH_ROAD: return WC_ROADVEH_LIST;
103 case VEH_SHIP: return WC_SHIPS_LIST;
104 case VEH_AIRCRAFT: return WC_AIRCRAFT_LIST;
105 }
106}
107
108/* Unified window procedure */
109void ShowVehicleViewWindow(const Vehicle *v);
110bool VehicleClicked(const Vehicle *v);
111bool VehicleClicked(VehicleList::const_iterator begin, VehicleList::const_iterator end);
112bool VehicleClicked(const GUIVehicleGroup &vehgroup);
113void StartStopVehicle(const Vehicle *v, bool texteffect);
114
115 Vehicle *CheckClickOnVehicle(const struct Viewport &vp, int x, int y);
116void StopGlobalFollowVehicle(const Vehicle *v);
117
118void DrawVehicleImage(const Vehicle *v, const Rect &r, VehicleID selection, EngineImageType image_type, int skip);
119void SetMouseCursorVehicle(const Vehicle *v, EngineImageType image_type);
120
121#endif /* VEHICLE_GUI_H */
CargoType
uint8_t CargoType
Cargo slots to indicate a cargo type within a game.
Definition cargo_type.h:21
Engine
Definition engine_base.h:38
OverflowSafeInt< int64_t >
company_type.h
Types related to companies.
engine_type.h
Types related to engines.
DECLARE_ENUM_AS_ADDABLE
#define DECLARE_ENUM_AS_ADDABLE(EnumType)
Operator that allows this enumeration to be added to any other enumeration.
Definition enum_type.hpp:129
order_type.h
Types related to orders.
VehicleOrderID
uint8_t VehicleOrderID
The index of an order within its current vehicle (not pool related)
Definition order_type.h:18
station_type.h
Types related to stations.
StringID
uint32_t StringID
Numeric value that represents a string, independent of the selected language.
Definition strings_type.h:19
CargoArray
Class for storing amounts of cargo.
Definition cargo_type.h:111
GUIVehicleGroup
Definition vehicle_gui_base.h:24
PoolID< uint16_t, struct EngineIDTag, 64000, 0xFFFF >
Rect
Specification of a rectangle with absolute coordinates of all edges.
Definition geometry_type.hpp:101
StrongType::Typedef< uint32_t, struct TileIndexTag, StrongType::Compare, StrongType::Integer, StrongType::Compatible< int32_t >, StrongType::Compatible< int64_t > >
TestedEngineDetails
Extra information about refitted cargo and capacity.
Definition vehicle_gui.h:42
TestedEngineDetails::cargo
CargoType cargo
Cargo type.
Definition vehicle_gui.h:44
TestedEngineDetails::cost
Money cost
Refit cost.
Definition vehicle_gui.h:43
TestedEngineDetails::all_capacities
CargoArray all_capacities
Capacities for all cargoes.
Definition vehicle_gui.h:47
TestedEngineDetails::mail_capacity
uint16_t mail_capacity
Mail capacity if available.
Definition vehicle_gui.h:46
TestedEngineDetails::capacity
uint capacity
Cargo capacity.
Definition vehicle_gui.h:45
Train
'Train' is either a loco or a wagon.
Definition train.h:91
VehicleCellSize
Dimensions of a cell in the purchase/depot windows.
Definition vehicle_gui.h:83
VehicleCellSize::extend_left
uint extend_left
Extend of the cell to the left.
Definition vehicle_gui.h:85
VehicleCellSize::height
uint height
Vehicle cell height.
Definition vehicle_gui.h:84
VehicleCellSize::extend_right
uint extend_right
Extend of the cell to the right.
Definition vehicle_gui.h:86
Vehicle
Vehicle data structure.
Definition vehicle_base.h:205
Viewport
Data structure for viewport, display of a part of the world.
Definition viewport_type.h:31
Window
Data structure for an opened window.
Definition window_gui.h:274
CheckClickOnVehicle
Vehicle * CheckClickOnVehicle(const Viewport &vp, int x, int y)
Find the vehicle close to the clicked coordinates.
Definition vehicle.cpp:1215
GetSingleVehicleWidth
int GetSingleVehicleWidth(const Vehicle *v, EngineImageType image_type)
Get the width of a vehicle (part) in pixels.
Definition vehicle_gui.cpp:3508
VehicleInvalidateWindowData
VehicleInvalidateWindowData
Special values for vehicle-related windows for the data parameter of InvalidateWindowData.
Definition vehicle_gui.h:34
VIWD_CONSIST_CHANGED
@ VIWD_CONSIST_CHANGED
Vehicle composition was changed.
Definition vehicle_gui.h:37
VIWD_AUTOREPLACE
@ VIWD_AUTOREPLACE
Autoreplace replaced the vehicle.
Definition vehicle_gui.h:38
VIWD_MODIFY_ORDERS
@ VIWD_MODIFY_ORDERS
Other order modifications.
Definition vehicle_gui.h:36
VIWD_REMOVE_ALL_ORDERS
@ VIWD_REMOVE_ALL_ORDERS
Removed / replaced all orders (after deleting / sharing).
Definition vehicle_gui.h:35
GetVehicleWidth
int GetVehicleWidth(const Vehicle *v, EngineImageType image_type)
Get the width of a vehicle (including all parts of the consist) in pixels.
Definition vehicle_gui.cpp:3532
GetCargoSubtypeText
StringID GetCargoSubtypeText(const Vehicle *v)
Get the cargo subtype text from NewGRF for the vehicle details window.
Definition vehicle_gui.cpp:1387
ShowVehicleViewWindow
void ShowVehicleViewWindow(const Vehicle *v)
Shows the vehicle view window of the given vehicle.
Definition vehicle_gui.cpp:3432
DrawRoadVehImage
void DrawRoadVehImage(const Vehicle *v, const Rect &r, VehicleID selection, EngineImageType image_type, int skip=0)
Draws an image of a road vehicle chain.
Definition roadveh_gui.cpp:112
GetVehicleHeight
uint GetVehicleHeight(VehicleType type)
Get the height of a single vehicle in the GUIs.
Definition vehicle_gui.h:74
ShowRefitOptionsList
uint ShowRefitOptionsList(int left, int right, int y, EngineID engine)
Display list of cargo types of the engine, for the purchase information window.
Definition vehicle_gui.cpp:1358
TrainDetailsWindowTabs
TrainDetailsWindowTabs
The tabs in the train details window.
Definition vehicle_gui.h:25
TDW_TAB_CAPACITY
@ TDW_TAB_CAPACITY
Tab with cargo capacity of the vehicles.
Definition vehicle_gui.h:28
TDW_TAB_TOTALS
@ TDW_TAB_TOTALS
Tab with sum of total cargo transported.
Definition vehicle_gui.h:29
TDW_TAB_INFO
@ TDW_TAB_INFO
Tab with name and value of the vehicles.
Definition vehicle_gui.h:27
TDW_TAB_CARGO
@ TDW_TAB_CARGO
Tab with cargo carried by the vehicles.
Definition vehicle_gui.h:26
DrawVehicleImage
void DrawVehicleImage(const Vehicle *v, const Rect &r, VehicleID selection, EngineImageType image_type, int skip)
Draws an image of a vehicle chain.
Definition vehicle_gui.cpp:1710
DrawVehiclePurchaseInfo
int DrawVehiclePurchaseInfo(int left, int right, int y, EngineID engine_number, TestedEngineDetails &te)
Draw the purchase info details of a vehicle at a given location.
Definition build_vehicle_gui.cpp:878
DrawShipImage
void DrawShipImage(const Vehicle *v, const Rect &r, VehicleID selection, EngineImageType image_type)
Draws an image of a ship.
Definition ship_gui.cpp:29
DrawTrainImage
void DrawTrainImage(const Train *v, const Rect &r, VehicleID selection, EngineImageType image_type, int skip, VehicleID drag_dest=VehicleID::Invalid())
Draws an image of a whole train.
Definition train_gui.cpp:98
DrawAircraftImage
void DrawAircraftImage(const Vehicle *v, const Rect &r, VehicleID selection, EngineImageType image_type)
Draws an image of an aircraft.
Definition aircraft_gui.cpp:70
VehicleClicked
bool VehicleClicked(const Vehicle *v)
Dispatch a "vehicle selected" event if any window waits for it.
Definition vehicle_gui.cpp:3442
StartStopVehicle
void StartStopVehicle(const Vehicle *v, bool texteffect)
Executes CMD_START_STOP_VEHICLE for given vehicle.
Definition vehicle_gui.cpp:2938
SetMouseCursorVehicle
void SetMouseCursorVehicle(const Vehicle *v, EngineImageType image_type)
Set the mouse cursor to look like a vehicle.
Definition vehicle_gui.cpp:3550
GetWindowClassForVehicleType
WindowClass GetWindowClassForVehicleType(VehicleType vt)
Get WindowClass for vehicle list of given vehicle type.
Definition vehicle_gui.h:97
ShowVehicleRefitWindow
void ShowVehicleRefitWindow(const Vehicle *v, VehicleOrderID order, Window *parent, bool auto_refit=false)
Show the refit window for a vehicle.
Definition vehicle_gui.cpp:1350
GetVehicleImageCellSize
VehicleCellSize GetVehicleImageCellSize(VehicleType type, EngineImageType image_type)
Get the GUI cell size for a vehicle image.
Definition depot_gui.cpp:162
vehicle_gui_base.h
Functions/classes shared between the different vehicle list GUIs.
vehicle_type.h
Types related to vehicles.
EngineImageType
EngineImageType
Visualisation contexts of vehicles and engines.
Definition vehicle_type.h:74
VehicleType
VehicleType
Available vehicle types.
Definition vehicle_type.h:22
VEH_ROAD
@ VEH_ROAD
Road vehicle type.
Definition vehicle_type.h:26
VEH_AIRCRAFT
@ VEH_AIRCRAFT
Aircraft vehicle type.
Definition vehicle_type.h:28
VEH_SHIP
@ VEH_SHIP
Ship vehicle type.
Definition vehicle_type.h:27
VEH_TRAIN
@ VEH_TRAIN
Train vehicle type.
Definition vehicle_type.h:25
vehiclelist.h
Functions and type for generating vehicle lists.
window_type.h
Types related to windows.
WindowClass
WindowClass
Window classes.
Definition window_type.h:49
WC_ROADVEH_LIST
@ WC_ROADVEH_LIST
Road vehicle list; Window numbers:
Definition window_type.h:319
WC_SHIPS_LIST
@ WC_SHIPS_LIST
Ships list; Window numbers:
Definition window_type.h:325
WC_TRAINS_LIST
@ WC_TRAINS_LIST
Trains list; Window numbers:
Definition window_type.h:313
WC_AIRCRAFT_LIST
@ WC_AIRCRAFT_LIST
Aircraft list; Window numbers:
Definition window_type.h:331