OpenTTD Source
1.11.2
|
#include "stdafx.h"
#include "engine_base.h"
#include "engine_func.h"
#include "station_base.h"
#include "network/network.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"
#include "safeguards.h"
Go to the source code of this file.
Data Structures | |
struct | BuildVehicleWindow |
GUI for building vehicles. More... | |
Functions | |
uint | GetEngineListHeight (VehicleType type) |
Get the height of a single 'entry' in the engine lists. More... | |
static bool | EngineNumberSorter (const EngineID &a, const EngineID &b) |
Determines order of engines by engineID. More... | |
static bool | EngineIntroDateSorter (const EngineID &a, const EngineID &b) |
Determines order of engines by introduction date. More... | |
static bool | EngineNameSorter (const EngineID &a, const EngineID &b) |
Determines order of engines by name. More... | |
static bool | EngineReliabilitySorter (const EngineID &a, const EngineID &b) |
Determines order of engines by reliability. More... | |
static bool | EngineCostSorter (const EngineID &a, const EngineID &b) |
Determines order of engines by purchase cost. More... | |
static bool | EngineSpeedSorter (const EngineID &a, const EngineID &b) |
Determines order of engines by speed. More... | |
static bool | EnginePowerSorter (const EngineID &a, const EngineID &b) |
Determines order of engines by power. More... | |
static bool | EngineTractiveEffortSorter (const EngineID &a, const EngineID &b) |
Determines order of engines by tractive effort. More... | |
static bool | EngineRunningCostSorter (const EngineID &a, const EngineID &b) |
Determines order of engines by running costs. More... | |
static bool | EnginePowerVsRunningCostSorter (const EngineID &a, const EngineID &b) |
Determines order of engines by running costs. More... | |
static bool | TrainEngineCapacitySorter (const EngineID &a, const EngineID &b) |
Determines order of train engines by capacity. More... | |
static bool | TrainEnginesThenWagonsSorter (const EngineID &a, const EngineID &b) |
Determines order of train engines by engine / wagon. More... | |
static bool | RoadVehEngineCapacitySorter (const EngineID &a, const EngineID &b) |
Determines order of road vehicles by capacity. More... | |
static bool | ShipEngineCapacitySorter (const EngineID &a, const EngineID &b) |
Determines order of ships by capacity. More... | |
static bool | AircraftEngineCargoSorter (const EngineID &a, const EngineID &b) |
Determines order of aircraft by cargo. More... | |
static bool | AircraftRangeSorter (const EngineID &a, const EngineID &b) |
Determines order of aircraft by range. More... | |
static bool CDECL | CargoAndEngineFilter (const EngineID *eid, const CargoID cid) |
Filters vehicles by cargo and engine (in case of rail vehicle). | |
static int | DrawCargoCapacityInfo (int left, int right, int y, EngineID engine, TestedEngineDetails &te) |
static int | DrawRailWagonPurchaseInfo (int left, int right, int y, EngineID engine_number, const RailVehicleInfo *rvi, TestedEngineDetails &te) |
static int | DrawRailEnginePurchaseInfo (int left, int right, int y, EngineID engine_number, const RailVehicleInfo *rvi, TestedEngineDetails &te) |
static int | DrawRoadVehPurchaseInfo (int left, int right, int y, EngineID engine_number, TestedEngineDetails &te) |
static int | DrawShipPurchaseInfo (int left, int right, int y, EngineID engine_number, bool refittable, TestedEngineDetails &te) |
static int | DrawAircraftPurchaseInfo (int left, int right, int y, EngineID engine_number, bool refittable, TestedEngineDetails &te) |
Draw aircraft specific details in the buy window. More... | |
static uint | ShowAdditionalText (int left, int right, int y, EngineID engine) |
Display additional text from NewGRF in the purchase information window. More... | |
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. More... | |
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. More... | |
void | DisplayVehicleSortDropDown (Window *w, VehicleType vehicle_type, int selected, int button) |
Display the dropdown for the vehicle sort criteria. More... | |
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. More... | |
static const CargoID | CF_NONE = CT_INVALID |
Show only vehicles which do not carry cargo (e.g. train engines) | |
static const CargoID | CF_ENGINES = CT_AUTO_REFIT |
Show only engines (for rail vehicles only) | |
bool | _engine_sort_direction |
false = descending, true = ascending. | |
byte | _engine_sort_last_criteria [] = {0, 0, 0, 0} |
Last set sort criteria, for each vehicle type. | |
bool | _engine_sort_last_order [] = {false, false, false, false} |
Last set direction of the sort order, for each vehicle type. | |
bool | _engine_sort_show_hidden_engines [] = {false, false, false, false} |
Last set 'show hidden engines' setting for each vehicle type. | |
static CargoID | _engine_sort_last_cargo_criteria [] = {CF_ANY, CF_ANY, CF_ANY, CF_ANY} |
Last set filter criteria, for each vehicle type. | |
static EngineID | _last_engine [2] = { INVALID_ENGINE, INVALID_ENGINE } |
EngList_SortTypeFunction *const | _engine_sort_functions [][11] |
Sort functions for the vehicle sort criteria, for each vehicle type. | |
const StringID | _engine_sort_listing [][12] |
Dropdown menu strings for the vehicle sort criteria. | |
static GUIEngineList::FilterFunction *const | _filter_funcs [] |
static WindowDesc | _build_vehicle_desc (WDP_AUTO, "build_vehicle", 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 391 of file build_vehicle_gui.cpp.
References _engine_sort_direction, 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 419 of file build_vehicle_gui.cpp.
References _engine_sort_direction, EngineNumberSorter(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get().
void DisplayVehicleSortDropDown | ( | Window * | w, |
VehicleType | vehicle_type, | ||
int | selected, | ||
int | button | ||
) |
Display the dropdown for the vehicle sort criteria.
w | Parent window (holds the dropdown button). |
vehicle_type | Vehicle type being sorted. |
selected | Currently selected sort criterium. |
button | Widget button. |
Definition at line 1025 of file build_vehicle_gui.cpp.
References _settings_game, VehicleSettings::roadveh_acceleration_model, VEH_ROAD, and GameSettings::vehicle.
Referenced by ReplaceVehicleWindow::OnClick(), and BuildVehicleWindow::OnClick().
|
static |
Draw aircraft specific details in the buy window.
left | Left edge of the window to draw in. |
right | Right edge of the window to draw in. |
y | Top of the area to draw in. |
engine_number | Engine to display. |
refittable | If set, the aircraft can be refitted. |
Definition at line 788 of file build_vehicle_gui.cpp.
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 963 of file build_vehicle_gui.cpp.
Referenced by BuildVehicleWindow::DrawWidget().
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.
left,right,y | location where to draw the info |
engine_number | the engine of which to draw the info of |
Definition at line 873 of file build_vehicle_gui.cpp.
Referenced by ReplaceVehicleWindow::OnPaint(), and BuildVehicleWindow::OnPaint().
Determines order of engines by purchase cost.
a | first engine to compare |
b | second engine to compare |
Definition at line 184 of file build_vehicle_gui.cpp.
References _engine_sort_direction, 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 118 of file build_vehicle_gui.cpp.
References _engine_sort_direction, 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 138 of file build_vehicle_gui.cpp.
Determines order of engines by engineID.
a | first engine to compare |
b | second engine to compare |
Definition at line 105 of file build_vehicle_gui.cpp.
References _engine_sort_direction, and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get().
Referenced by AircraftEngineCargoSorter(), AircraftRangeSorter(), EngineCostSorter(), EngineIntroDateSorter(), EnginePowerSorter(), EnginePowerVsRunningCostSorter(), EngineReliabilitySorter(), EngineRunningCostSorter(), EngineSpeedSorter(), EngineTractiveEffortSorter(), ReplaceVehicleWindow::GenerateReplaceVehList(), RoadVehEngineCapacitySorter(), and ShipEngineCapacitySorter().
Determines order of engines by power.
a | first engine to compare |
b | second engine to compare |
Definition at line 218 of file build_vehicle_gui.cpp.
References _engine_sort_direction, 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 269 of file build_vehicle_gui.cpp.
References _engine_sort_direction, EngineNumberSorter(), EngineRunningCostSorter(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), Engine::GetPower(), and Engine::GetRunningCost().
Determines order of engines by reliability.
a | first engine to compare |
b | second engine to compare |
Definition at line 167 of file build_vehicle_gui.cpp.
References _engine_sort_direction, 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 252 of file build_vehicle_gui.cpp.
References _engine_sort_direction, ClampToI32(), EngineNumberSorter(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get().
Referenced by EnginePowerVsRunningCostSorter().
Determines order of engines by speed.
a | first engine to compare |
b | second engine to compare |
Definition at line 201 of file build_vehicle_gui.cpp.
References _engine_sort_direction, 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 235 of file build_vehicle_gui.cpp.
References _engine_sort_direction, 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 45 of file build_vehicle_gui.cpp.
References EIT_PURCHASE, FONT_HEIGHT_NORMAL, GetVehicleImageCellSize(), WD_MATRIX_BOTTOM, and WD_MATRIX_TOP.
Referenced by ReplaceVehicleWindow::UpdateWidgetSize(), and BuildVehicleWindow::UpdateWidgetSize().
Determines order of road vehicles by capacity.
a | first engine to compare |
b | second engine to compare |
Definition at line 350 of file build_vehicle_gui.cpp.
References _engine_sort_direction, EngineNumberSorter(), and GetTotalCapacityOfArticulatedParts().
Determines order of ships by capacity.
a | first engine to compare |
b | second engine to compare |
Definition at line 369 of file build_vehicle_gui.cpp.
References _engine_sort_direction, EngineNumberSorter(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), and Engine::GetDisplayDefaultCapacity().
|
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 851 of file build_vehicle_gui.cpp.
Determines order of train engines by capacity.
a | first engine to compare |
b | second engine to compare |
Definition at line 311 of file build_vehicle_gui.cpp.
Determines order of train engines by engine / wagon.
a | first engine to compare |
b | second engine to compare |
Definition at line 331 of file build_vehicle_gui.cpp.
|
static |
Definition at line 548 of file build_vehicle_gui.cpp.
|
static |
Special cargo filter criteria.
Show all vehicles independent of carried cargo (i.e. no filtering)
Definition at line 89 of file build_vehicle_gui.cpp.
Referenced by CargoAndEngineFilter(), BuildVehicleWindow::OnDropdownSelect(), and BuildVehicleWindow::SetCargoFilterArray().