OpenTTD Source
20240917-master-g9ab0a47812
|
Go to the documentation of this file.
19 #include "table/strings.h"
33 Money feeder_share = 0;
38 DrawString(r.left, r.right, y, STR_VEHICLE_INFO_BUILT_VALUE);
43 std::array<StringID, NUM_CARGO> subtype_text{};
45 for (
const Vehicle *u = v; u !=
nullptr; u = u->
Next()) {
46 max_cargo[u->cargo_type] += u->cargo_cap;
47 if (u->cargo_cap > 0) {
49 if (text != STR_EMPTY) subtype_text[u->cargo_type] = text;
53 std::string capacity =
GetString(STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY);
58 if (max_cargo[cid] > 0) {
59 if (!first) capacity +=
", ";
65 if (subtype_text[cid] != STR_NULL) {
73 DrawString(r.left, r.right, y, capacity, TC_BLUE);
76 for (
const Vehicle *u = v; u !=
nullptr; u = u->
Next()) {
77 if (u->cargo_cap == 0)
continue;
79 str = STR_VEHICLE_DETAILS_CARGO_EMPTY;
80 if (u->cargo.StoredCount() > 0) {
84 str = STR_VEHICLE_DETAILS_CARGO_FROM;
85 feeder_share += u->cargo.GetFeederShare();
95 DrawString(r.left, r.right, y, STR_VEHICLE_INFO_CAPACITY);
98 str = STR_VEHICLE_DETAILS_CARGO_EMPTY;
103 str = STR_VEHICLE_DETAILS_CARGO_FROM;
112 DrawString(r.left, r.right, y, STR_VEHICLE_INFO_FEEDER_CARGO_VALUE);
129 int max_width = r.
Width();
135 int px = rtl ? max_width + skip : -skip;
137 for (; u !=
nullptr && (rtl ? px > 0 : px < max_width); u = u->
Next())
142 if (rtl ? px + width > 0 : px - width < max_width) {
145 u->GetImage(dir, image_type, &seq);
149 px += rtl ? -width : width;
152 if (v->
index == selection) {
154 Rect hr = {(rtl ? px : 0), 0, (rtl ? max_width : px) - 1, height - 1};
Buses, trucks and trams belong to this class.
uint StoredCount() const
Returns sum of cargo on board the vehicle (ie not only reserved).
int Height() const
Get height of Rect.
Money value
Value of the vehicle.
uint16_t cargo_cap
total capacity
std::vector< const CargoSpec * > _sorted_cargo_specs
Cargo specifications sorted alphabetically by name.
Vehicle * Next() const
Get the next vehicle of this vehicle.
T * Next() const
Get next vehicle in the chain.
uint32_t StringID
Numeric value that represents a string, independent of the selected language.
Tindex index
Index of this pool item.
Class for storing amounts of cargo.
Specification of a cargo type.
Rect Expand(int s) const
Copy and expand Rect by s pixels.
EngineImageType
Visualisation contexts of vehicles and engines.
void Draw(int x, int y, PaletteID default_pal, bool force_pal) const
Draw the sprite sequence.
StationID GetFirstStation() const
Returns the first station of the first cargo packet in this list.
uint32_t PaletteID
The number of the palette.
@ FS_NORMAL
Index of the normal font in the font tables.
Rect Translate(int x, int y) const
Copy and translate Rect by x,y pixels.
uint64_t PackEngineNameDParam(EngineID engine_id, EngineNameContext context, uint32_t extra_data=0)
Combine an engine ID and a name context to an engine name dparam.
EngineID engine_type
The type of engine used for this vehicle.
@ VS_CRASHED
Vehicle is crashed.
Sprite sequence for a vehicle part.
VehicleCargoList cargo
The cargo this vehicle is carrying.
TimerGameCalendar::Year build_year
Year the vehicle has been built.
uint32_t VehicleID
The type all our vehicle IDs have.
Coordinates of a point in 2D.
int CenterBounds(int min, int max, int size)
Determine where to draw a centred object inside a widget.
void DrawRoadVehImage(const Vehicle *v, const Rect &r, VehicleID selection, EngineImageType image_type, int skip)
Draws an image of a road vehicle chain.
bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int height)
Set up a clipping area for only drawing into a certain area.
StringID GetCargoSubtypeText(const Vehicle *v)
Get the cargo subtype text from NewGRF for the vehicle details window.
void DrawRoadVehDetails(const Vehicle *v, const Rect &r)
Draw the details for the given vehicle at the given position.
static const PaletteID PALETTE_CRASH
Recolour sprite greying of crashed vehicles.
Money GetFeederShare() const
Returns total sum of the feeder share for all packets.
int GetDisplayImageWidth(Point *offset=nullptr) const
Get the width of a road vehicle image in the GUI.
static RoadVehicle * From(Vehicle *v)
Converts a Vehicle to SpecializedVehicle with type checking.
PaletteID GetVehiclePalette(const Vehicle *v)
Get the colour map for a vehicle.
void SetDParam(size_t n, uint64_t v)
Set a string parameter v at index n in the global string parameter array.
Class to backup a specific variable and restore it upon destruction of this object to prevent stack v...
int ScaleSpriteTrad(int value)
Scale traditional pixel dimensions to GUI zoom level, for drawing sprites.
std::string GetString(StringID string)
Resolve the given StringID into a std::string with all the associated DParam lookups and formatting.
@ VehicleDetails
Name is shown in the vehicle details GUI.
bool HasArticulatedPart() const
Check if an engine has an articulated part.
uint8_t CargoID
Cargo slots to indicate a cargo type within a game.
Direction
Defines the 8 directions on the map.
int GetCharacterHeight(FontSize size)
Get height of a character for a given font size.
int DrawString(int left, int right, int top, std::string_view str, TextColour colour, StringAlignment align, bool underline, FontSize fontsize)
Draw string, possibly truncated to make it fit in its allocated space.
CargoID cargo_type
type of cargo this vehicle is carrying
int Width() const
Get width of Rect.
Specification of a rectangle with absolute coordinates of all edges.
@ TD_RTL
Text is written right-to-left by default.
TextDirection _current_text_dir
Text direction of the currently selected language.
@ FR_BORDERONLY
Draw border only, no background.
Data about how and where to blit pixels.