GUI for building vehicles. More...
#include "stdafx.h"
#include "engine_base.h"
#include "engine_func.h"
#include "station_base.h"
#include "articulated_vehicles.h"
#include "textbuf_gui.h"
#include "command_func.h"
#include "company_func.h"
#include "vehicle_gui.h"
#include "newgrf_engine.h"
#include "newgrf_text.h"
#include "group.h"
#include "string_func.h"
#include "strings_func.h"
#include "window_func.h"
#include "date_func.h"
#include "vehicle_func.h"
#include "widgets/dropdown_func.h"
#include "engine_gui.h"
#include "cargotype.h"
#include "core/geometry_func.hpp"
#include "autoreplace_func.h"
#include "widgets/build_vehicle_widget.h"
#include "table/strings.h"
Go to the source code of this file.
Data Structures | |
struct | BuildVehicleWindow |
Functions | |
uint | GetEngineListHeight (VehicleType type) |
Get the height of a single 'entry' in the engine lists. | |
static int CDECL | EngineNumberSorter (const EngineID *a, const EngineID *b) |
Determines order of engines by engineID. | |
static int CDECL | EngineIntroDateSorter (const EngineID *a, const EngineID *b) |
Determines order of engines by introduction date. | |
static int CDECL | EngineNameSorter (const EngineID *a, const EngineID *b) |
Determines order of engines by name. | |
static int CDECL | EngineReliabilitySorter (const EngineID *a, const EngineID *b) |
Determines order of engines by reliability. | |
static int CDECL | EngineCostSorter (const EngineID *a, const EngineID *b) |
Determines order of engines by purchase cost. | |
static int CDECL | EngineSpeedSorter (const EngineID *a, const EngineID *b) |
Determines order of engines by speed. | |
static int CDECL | EnginePowerSorter (const EngineID *a, const EngineID *b) |
Determines order of engines by power. | |
static int CDECL | EngineTractiveEffortSorter (const EngineID *a, const EngineID *b) |
Determines order of engines by tractive effort. | |
static int CDECL | EngineRunningCostSorter (const EngineID *a, const EngineID *b) |
Determines order of engines by running costs. | |
static int CDECL | EnginePowerVsRunningCostSorter (const EngineID *a, const EngineID *b) |
Determines order of engines by running costs. | |
static int CDECL | TrainEngineCapacitySorter (const EngineID *a, const EngineID *b) |
Determines order of train engines by capacity. | |
static int CDECL | TrainEnginesThenWagonsSorter (const EngineID *a, const EngineID *b) |
Determines order of train engines by engine / wagon. | |
static int CDECL | RoadVehEngineCapacitySorter (const EngineID *a, const EngineID *b) |
Determines order of road vehicles by capacity. | |
static int CDECL | ShipEngineCapacitySorter (const EngineID *a, const EngineID *b) |
Determines order of ships by capacity. | |
static int CDECL | AircraftEngineCargoSorter (const EngineID *a, const EngineID *b) |
Determines order of aircraft by cargo. | |
static int CDECL | AircraftRangeSorter (const EngineID *a, const EngineID *b) |
Determines order of aircraft by range. | |
static bool CDECL | CargoFilter (const EngineID *eid, const CargoID cid) |
Cargo filter functions. | |
static int | DrawCargoCapacityInfo (int left, int right, int y, EngineID engine, bool refittable) |
static int | DrawRailWagonPurchaseInfo (int left, int right, int y, EngineID engine_number, const RailVehicleInfo *rvi) |
static int | DrawRailEnginePurchaseInfo (int left, int right, int y, EngineID engine_number, const RailVehicleInfo *rvi) |
static int | DrawRoadVehPurchaseInfo (int left, int right, int y, EngineID engine_number) |
static int | DrawShipPurchaseInfo (int left, int right, int y, EngineID engine_number, bool refittable) |
static int | DrawAircraftPurchaseInfo (int left, int right, int y, EngineID engine_number, bool refittable) |
static uint | ShowAdditionalText (int left, int right, int y, EngineID engine) |
Display additional text from NewGRF in the purchase information window. | |
int | DrawVehiclePurchaseInfo (int left, int right, int y, EngineID engine_number) |
Draw the purchase info details of a vehicle at a given location. | |
void | DrawEngineList (VehicleType type, int l, int r, int y, const GUIEngineList *eng_list, uint16 min, uint16 max, EngineID selected_id, bool show_count, GroupID selected_group) |
Engine drawing loop. | |
void | ShowBuildVehicleWindow (TileIndex tile, VehicleType type) |
Variables | |
static const NWidgetPart | _nested_build_vehicle_widgets [] |
static const CargoID | CF_ANY = CT_NO_REFIT |
Special cargo filter criteria. | |
static const CargoID | CF_NONE = CT_INVALID |
Show only vehicles which do not carry cargo (e.g. train engines). | |
static bool | _internal_sort_order |
false = descending, true = ascending | |
static byte | _last_sort_criteria [] = {0, 0, 0, 0} |
static bool | _last_sort_order [] = {false, false, false, false} |
static CargoID | _last_filter_criteria [] = {CF_ANY, CF_ANY, CF_ANY, CF_ANY} |
static EngList_SortTypeFunction *const | _sorter [][11] |
static const StringID | _sort_listing [][12] |
static GUIEngineList::FilterFunction *const | _filter_funcs [] |
static const WindowDesc | _build_vehicle_desc (WDP_AUTO, 240, 268, WC_BUILD_VEHICLE, WC_NONE, WDF_CONSTRUCTION, _nested_build_vehicle_widgets, lengthof(_nested_build_vehicle_widgets)) |
GUI for building vehicles.
Definition in file build_vehicle_gui.cpp.
Determines order of aircraft by cargo.
*a | first engine to compare | |
*b | second engine to compare |
Definition at line 373 of file build_vehicle_gui.cpp.
References _internal_sort_order, EngineNumberSorter(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), and Engine::GetDisplayDefaultCapacity().
Determines order of aircraft by range.
*a | first engine to compare. | |
*b | second engine to compare. |
Definition at line 401 of file build_vehicle_gui.cpp.
References _internal_sort_order, EngineNumberSorter(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get().
void DrawEngineList | ( | VehicleType | type, | |
int | l, | |||
int | r, | |||
int | y, | |||
const GUIEngineList * | eng_list, | |||
uint16 | min, | |||
uint16 | max, | |||
EngineID | selected_id, | |||
bool | show_count, | |||
GroupID | selected_group | |||
) |
Engine drawing loop.
type | Type of vehicle (VEH_*) | |
l | The left most location of the list | |
r | The right most location of the list | |
y | The top most location of the list | |
eng_list | What engines to draw | |
min | where to start in the list | |
max | where in the list to end | |
selected_id | what engine to highlight as selected, if any | |
show_count | Whether to show the amount of engines or not | |
selected_group | the group to list the engines of |
Definition at line 872 of file build_vehicle_gui.cpp.
References _current_text_dir, _local_company, DrawSprite(), DrawString(), DrawVehicleEngine(), EIT_PURCHASE, EngineHasReplacementForCompany(), FONT_HEIGHT_SMALL, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), GetEngineListHeight(), GetEnginePalette(), GetGroupNumEngines(), GetSpriteSize(), GetStringBoundingBox(), lengthof, PALETTE_CRASH, SA_FORCE, SA_RIGHT, SetDParam(), WD_FRAMERECT_BOTTOM, WD_FRAMERECT_LEFT, and WD_FRAMERECT_RIGHT.
Referenced by BuildVehicleWindow::DrawWidget(), and ReplaceVehicleWindow::DrawWidget().
int DrawVehiclePurchaseInfo | ( | int | left, | |
int | right, | |||
int | y, | |||
EngineID | engine_number | |||
) |
Draw the purchase info details of a vehicle at a given location.
left,right,y | location where to draw the info | |
engine_number | the engine of which to draw the info of |
Definition at line 790 of file build_vehicle_gui.cpp.
References ConvertDateToYMD(), CT_INVALID, DAYS_IN_LEAP_YEAR, DrawString(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), Engine::GetLifeLengthInDays(), Engine::intro_date, IsArticulatedVehicleRefittable(), RAILVEH_WAGON, Engine::reliability, SetDParam(), ShowAdditionalText(), ShowRefitOptionsList(), ToPercent16(), Engine::type, VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, VEH_TRAIN, and YearMonthDay::year.
Referenced by BuildVehicleWindow::OnPaint(), and ReplaceVehicleWindow::OnPaint().
Determines order of engines by purchase cost.
*a | first engine to compare | |
*b | second engine to compare |
Definition at line 180 of file build_vehicle_gui.cpp.
References _internal_sort_order, ClampToI32(), EngineNumberSorter(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get().
Determines order of engines by introduction date.
*a | first engine to compare | |
*b | second engine to compare |
Definition at line 113 of file build_vehicle_gui.cpp.
References _internal_sort_order, EngineNumberSorter(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get().
Determines order of engines by name.
*a | first engine to compare | |
*b | second engine to compare |
Definition at line 130 of file build_vehicle_gui.cpp.
References _internal_sort_order, EngineNumberSorter(), INVALID_ENGINE, lastof, SetDParam(), and strnatcmp().
Determines order of engines by engineID.
*a | first engine to compare | |
*b | second engine to compare |
Definition at line 100 of file build_vehicle_gui.cpp.
References _internal_sort_order, and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get().
Referenced by AircraftEngineCargoSorter(), AircraftRangeSorter(), EngineCostSorter(), EngineIntroDateSorter(), EngineNameSorter(), EnginePowerSorter(), EnginePowerVsRunningCostSorter(), EngineReliabilitySorter(), EngineRunningCostSorter(), EngineSpeedSorter(), EngineTractiveEffortSorter(), ReplaceVehicleWindow::GenerateReplaceVehList(), RoadVehEngineCapacitySorter(), ShipEngineCapacitySorter(), TrainEngineCapacitySorter(), and TrainEnginesThenWagonsSorter().
Determines order of engines by power.
*a | first engine to compare | |
*b | second engine to compare |
Definition at line 214 of file build_vehicle_gui.cpp.
References _internal_sort_order, EngineNumberSorter(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get().
Determines order of engines by running costs.
*a | first engine to compare | |
*b | second engine to compare |
Definition at line 265 of file build_vehicle_gui.cpp.
References _internal_sort_order, ClampToI32(), EngineNumberSorter(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), Engine::GetPower(), Engine::GetRunningCost(), and max().
Determines order of engines by reliability.
*a | first engine to compare | |
*b | second engine to compare |
Definition at line 163 of file build_vehicle_gui.cpp.
References _internal_sort_order, EngineNumberSorter(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get().
Determines order of engines by running costs.
*a | first engine to compare | |
*b | second engine to compare |
Definition at line 248 of file build_vehicle_gui.cpp.
References _internal_sort_order, ClampToI32(), EngineNumberSorter(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get().
Determines order of engines by speed.
*a | first engine to compare | |
*b | second engine to compare |
Definition at line 197 of file build_vehicle_gui.cpp.
References _internal_sort_order, EngineNumberSorter(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get().
Determines order of engines by tractive effort.
*a | first engine to compare | |
*b | second engine to compare |
Definition at line 231 of file build_vehicle_gui.cpp.
References _internal_sort_order, EngineNumberSorter(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get().
uint GetEngineListHeight | ( | VehicleType | type | ) |
Get the height of a single 'entry' in the engine lists.
type | the vehicle type to get the height of |
Definition at line 44 of file build_vehicle_gui.cpp.
References FONT_HEIGHT_NORMAL, GetVehicleHeight(), and WD_MATRIX_TOP.
Referenced by DrawEngineList(), BuildVehicleWindow::UpdateWidgetSize(), and ReplaceVehicleWindow::UpdateWidgetSize().
Determines order of road vehicles by capacity.
*a | first engine to compare | |
*b | second engine to compare |
Definition at line 332 of file build_vehicle_gui.cpp.
References _internal_sort_order, EngineNumberSorter(), and GetTotalCapacityOfArticulatedParts().
Determines order of ships by capacity.
*a | first engine to compare | |
*b | second engine to compare |
Definition at line 351 of file build_vehicle_gui.cpp.
References _internal_sort_order, EngineNumberSorter(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), and Engine::GetDisplayDefaultCapacity().
static uint ShowAdditionalText | ( | int | left, | |
int | right, | |||
int | y, | |||
EngineID | engine | |||
) | [static] |
Display additional text from NewGRF in the purchase information window.
left | Left border of text bounding box | |
right | Right border of text bounding box | |
y | Top border of text bounding box | |
engine | Engine to query the additional purchase information for |
Definition at line 769 of file build_vehicle_gui.cpp.
References CALLBACK_FAILED, CBID_VEHICLE_ADDITIONAL_TEXT, DrawStringMultiLine(), ErrorUnknownCallbackResult(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), GetGRFStringID(), GetVehicleCallback(), StartTextRefStackUsage(), and StopTextRefStackUsage().
Referenced by DrawVehiclePurchaseInfo().
Determines order of train engines by capacity.
*a | first engine to compare | |
*b | second engine to compare |
Definition at line 293 of file build_vehicle_gui.cpp.
References _internal_sort_order, EngineNumberSorter(), GetTotalCapacityOfArticulatedParts(), and RAILVEH_MULTIHEAD.
Determines order of train engines by engine / wagon.
*a | first engine to compare | |
*b | second engine to compare |
Definition at line 313 of file build_vehicle_gui.cpp.
References _internal_sort_order, EngineNumberSorter(), and RAILVEH_WAGON.
GUIEngineList::FilterFunction* const _filter_funcs[] [static] |
{ &CargoFilter, }
Definition at line 523 of file build_vehicle_gui.cpp.
Special cargo filter criteria.
Show all vehicles independent of carried cargo (i.e. no filtering)
Definition at line 86 of file build_vehicle_gui.cpp.
Referenced by CargoFilter(), BuildVehicleWindow::FilterSingleEngine(), BuildVehicleWindow::OnDropdownSelect(), and BuildVehicleWindow::SetCargoFilterArray().