Go to the documentation of this file.
31 #include "table/strings.h"
44 default: NOT_REACHED();
48 case VEH_SHIP:
return STR_ENGINE_PREVIEW_SHIP;
54 static constexpr
NWidgetPart _nested_engine_preview_widgets[] = {
93 default: NOT_REACHED();
101 size->width = std::max(size->width, x +
std::abs(x_offs));
108 void DrawWidget(
const Rect &r,
WidgetID widget)
const override
122 y += this->vehicle_space;
126 void OnClick([[maybe_unused]]
Point pt,
WidgetID widget, [[maybe_unused]]
int click_count)
override
138 void OnInvalidateData([[maybe_unused]]
int data = 0, [[maybe_unused]]
bool gui_scope =
true)
override
140 if (!gui_scope)
return;
147 static WindowDesc _engine_preview_desc(__FILE__, __LINE__,
151 std::begin(_nested_engine_preview_widgets), std::end(_nested_engine_preview_widgets)
155 void ShowEnginePreviewWindow(
EngineID engine)
157 AllocateWindowDescFront<EnginePreviewWindow>(&_engine_preview_desc, engine);
168 return cap.
GetSum<uint>();
173 SetDParam(0, STR_ENGINE_PREVIEW_COST_WEIGHT);
185 SetDParam(9, STR_ENGINE_PREVIEW_CAPACITY);
190 return STR_ENGINE_PREVIEW_TEXT4;
196 uint16_t mail_capacity;
200 SetDParam(0, STR_ENGINE_PREVIEW_COST_MAX_SPEED);
204 SetDParam(3, range > 0 ? STR_ENGINE_PREVIEW_TYPE_RANGE : STR_ENGINE_PREVIEW_TYPE);
211 SetDParam(9, mail_capacity > 0 ? STR_ENGINE_PREVIEW_CAPACITY_2 : STR_ENGINE_PREVIEW_CAPACITY);
214 SetDParam(12, GetCargoIDByLabel(CT_MAIL));
217 return STR_ENGINE_PREVIEW_TEXT4;
225 SetDParam(9, STR_ENGINE_PREVIEW_CAPACITY);
231 SetDParam(0, STR_ENGINE_PREVIEW_COST_MAX_SPEED);
235 return STR_ENGINE_PREVIEW_TEXT3;
237 SetDParam(0, STR_ENGINE_PREVIEW_COST_WEIGHT);
241 SetDParam(3, STR_ENGINE_PREVIEW_SPEED_POWER_MAX_TE);
246 return STR_ENGINE_PREVIEW_TEXT4;
252 SetDParam(0, STR_ENGINE_PREVIEW_COST_MAX_SPEED);
259 SetDParam(9, STR_ENGINE_PREVIEW_CAPACITY);
263 return STR_ENGINE_PREVIEW_TEXT3;
279 return GetTrainEngineInfoString(e);
282 return GetRoadVehEngineInfoString(e);
285 return GetShipEngineInfoString(e);
288 return GetAircraftEngineInfoString(e);
290 default: NOT_REACHED();
309 DrawTrainEngine(left, right, preferred_x, y, engine, pal, image_type);
317 DrawShipEngine(left, right, preferred_x, y, engine, pal, image_type);
321 DrawAircraftEngine(left, right, preferred_x, y, engine, pal, image_type);
324 default: NOT_REACHED();
335 if (el.size() < 2)
return;
336 std::sort(el.begin(), el.end(), compare);
348 if (num_items < 2)
return;
349 assert(begin < el.size());
350 assert(begin + num_items <= el.size());
351 std::sort(el.begin() + begin, el.begin() + begin + num_items, compare);
@ VEH_AIRCRAFT
Aircraft vehicle type.
StringID GetEngineInfoString(EngineID engine)
Get a multi-line string with some technical data, describing the engine.
StringID new_engine
Name of an engine for this type of road in the engine preview GUI.
const T GetSum() const
Get the sum of all cargo amounts.
@ EIT_PREVIEW
Vehicle drawn in preview window, news, ...
static Titem * Get(size_t index)
Returns Titem with given index.
Dimensions (a width and height) of a rectangle in 2D.
@ WDF_CONSTRUCTION
This window is used for construction; close it whenever changing company.
const RailTypeInfo * GetRailTypeInfo(RailType railtype)
Returns a pointer to the Railtype information for a given railtype.
uint GetDisplayDefaultCapacity(uint16_t *mail_capacity=nullptr) const
Determines the default cargo capacity of an engine for display purposes.
bool EngList_SortTypeFunction(const GUIEngineListItem &, const GUIEngineListItem &)
argument type for EngList_Sort.
uint32_t StringID
Numeric value that represents a string, independent of the selected language.
StringID new_loco
Name of an engine for this type of rail in the engine preview GUI.
@ WC_ENGINE_PREVIEW
Engine preview window; Window numbers:
CargoArray GetCapacityOfArticulatedParts(EngineID engine)
Get the capacity of the parts of a given engine.
uint GetDisplayMaxTractiveEffort() const
Returns the tractive effort of the engine for display purposes.
Tindex index
Index of this pool item.
@ EIT_PURCHASE
Vehicle drawn in purchase list, autoreplace gui, ...
Class for storing amounts of cargo.
@ WF_STICKY
Window is made sticky by user.
virtual void Close(int data=0)
Hide the window and all its child windows, and mark them for a later deletion.
Money GetRunningCost() const
Return how much the running costs of this engine are.
StringID GetEngineCategoryName(EngineID engine)
Return the category of an engine.
static bool UsingWallclockUnits(bool newgame=false)
Check if we are using wallclock units.
EngineImageType
Visualisation contexts of vehicles and engines.
@ VEH_ROAD
Road vehicle type.
struct RailTypeInfo::@26 strings
Strings associated with the rail type.
CargoID GetDefaultCargoType() const
Determines the default cargo type of an engine.
RoadType roadtype
Road type.
uint32_t PaletteID
The number of the palette.
PaletteID GetEnginePalette(EngineID engine_type, CompanyID company)
Get the colour map for an engine.
void GetShipSpriteSize(EngineID engine, uint &width, uint &height, int &xoffs, int &yoffs, EngineImageType image_type)
Get the size of the sprite of a ship sprite heading west (used for lists).
Window(WindowDesc *desc)
Empty constructor, initialization has been moved to InitNested() called from the constructor of the d...
High level window description.
uint8_t train_acceleration_model
realistic acceleration for trains
uint GetDisplayMaxSpeed() const
Returns max speed of the engine for display purposes.
void DrawRoadVehEngine(int left, int right, int preferred_x, int y, EngineID engine, PaletteID pal, EngineImageType image_type)
Draw a road vehicle engine.
ResizeInfo resize
Resize information.
@ PreviewNews
Name is shown in exclusive preview or newspaper.
int32_t WindowNumber
Number to differentiate different windows of the same class.
@ FS_NORMAL
Index of the normal font in the font tables.
@ SA_TOP
Top align the text.
void InitNested(WindowNumber number=0)
Perform complete initialization of the Window with nested widgets, to allow use.
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.
GameSettings _settings_game
Game settings of a running game or the scenario editor.
uint GetDisplayWeight() const
Returns the weight of the engine for display purposes.
CompanyID _local_company
Company controlled by the human player at this client. Can also be COMPANY_SPECTATOR.
WindowFlags flags
Window flags.
int GetStringHeight(std::string_view str, int maxw, FontSize fontsize)
Calculates height of string (in pixels).
bool _shift_pressed
Is Shift pressed?
byte CargoID
Cargo slots to indicate a cargo type within a game.
Coordinates of a point in 2D.
Money GetCost() const
Return how much a new engine costs.
WindowNumber window_number
Window number within the window class.
@ WC_NONE
No window, redirects to WC_MAIN_WINDOW.
@ SA_HOR_CENTER
Horizontally center the text.
void EngList_Sort(GUIEngineList &el, EngList_SortTypeFunction compare)
Sort all items using quick sort and given 'CompareItems' function.
const RoadTypeInfo * GetRoadTypeInfo(RoadType roadtype)
Returns a pointer to the Roadtype information for a given roadtype.
uint8_t roadveh_acceleration_model
realistic acceleration for road vehicles
int DrawStringMultiLine(int left, int right, int top, int bottom, std::string_view str, TextColour colour, StringAlignment align, bool underline, FontSize fontsize)
Draw string, possibly over multiple lines.
void GetAircraftSpriteSize(EngineID engine, uint &width, uint &height, int &xoffs, int &yoffs, EngineImageType image_type)
Get the size of the sprite of an aircraft sprite heading west (used for lists).
constexpr T abs(const T a)
Returns the absolute value of (scalar) variable.
uint GetPower() const
Returns the power of the engine for display and sorting purposes.
void GetTrainSpriteSize(EngineID engine, uint &width, uint &height, int &xoffs, int &yoffs, EngineImageType image_type)
Get the size of the sprite of a train sprite heading west, or both heads (used for lists).
uint GetTotalCapacityOfArticulatedParts(EngineID engine)
Get the capacity of an engine with articulated parts.
void SetDParam(size_t n, uint64_t v)
Set a string parameter v at index n in the global string parameter array.
void GetRoadVehSpriteSize(EngineID engine, uint &width, uint &height, int &xoffs, int &yoffs, EngineImageType image_type)
Get the size of the sprite of a road vehicle sprite heading west (used for lists).
int ScaleSpriteTrad(int value)
Scale traditional pixel dimensions to GUI zoom level, for drawing sprites.
void EngList_SortPartial(GUIEngineList &el, EngList_SortTypeFunction compare, size_t begin, size_t num_items)
Sort selected range of items (on indices @ <begin, begin+num_items-1>)
RailType railtype
Railtype, mangled if elrail is disabled.
int64_t PackVelocity(uint speed, VehicleType type)
Pack velocity and vehicle type for use with SCC_VELOCITY string parameter.
struct RoadTypeInfo::@29 strings
Strings associated with the rail type.
@ SA_CENTER
Center both horizontally and vertically.
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.
VehicleSettings vehicle
options for vehicles
uint16_t EngineID
Unique identification number of an engine.
Data structure for an opened window.
@ VEH_TRAIN
Train vehicle type.
@ VEH_SHIP
Ship vehicle type.
Specification of a rectangle with absolute coordinates of all edges.
uint8_t acceleration_type
Acceleration type of this rail type.
@ WDP_CENTER
Center the window.
StringID GetAircraftTypeText() const
Get the name of the aircraft type for display purposes.
void DrawVehicleEngine(int left, int right, int preferred_x, int y, EngineID engine, PaletteID pal, EngineImageType image_type)
Draw an engine.
VehicleType type
Vehicle type, ie VEH_ROAD, VEH_TRAIN, etc.
uint16_t GetRange() const
Get the range of an aircraft type.
void OnInvalidateData([[maybe_unused]] int data=0, [[maybe_unused]] bool gui_scope=true) override
Some data on this window has become invalid.