OpenTTD Source 20241224-master-gf74b0cf984
order_gui.cpp File Reference

GUI related to orders. More...

#include "stdafx.h"
#include "command_func.h"
#include "viewport_func.h"
#include "depot_map.h"
#include "roadveh.h"
#include "timetable.h"
#include "strings_func.h"
#include "company_func.h"
#include "dropdown_type.h"
#include "dropdown_func.h"
#include "textbuf_gui.h"
#include "string_func.h"
#include "tilehighlight_func.h"
#include "network/network.h"
#include "station_base.h"
#include "industry.h"
#include "waypoint_base.h"
#include "core/geometry_func.hpp"
#include "hotkeys.h"
#include "aircraft.h"
#include "engine_func.h"
#include "vehicle_func.h"
#include "vehiclelist.h"
#include "error.h"
#include "order_cmd.h"
#include "company_cmd.h"
#include "widgets/order_widget.h"
#include "safeguards.h"

Go to the source code of this file.

Data Structures

struct  OrdersWindow
 Order window code for all vehicles. More...
 

Enumerations

enum  {
  OHK_SKIP , OHK_DELETE , OHK_GOTO , OHK_NONSTOP ,
  OHK_FULLLOAD , OHK_UNLOAD , OHK_NEAREST_DEPOT , OHK_ALWAYS_SERVICE ,
  OHK_TRANSFER , OHK_NO_UNLOAD , OHK_NO_LOAD
}
 Hotkeys for order window. More...
 

Functions

uint ConvertSpeedToDisplaySpeed (uint speed, VehicleType type)
 Convert the given (internal) speed to the display speed.
 
uint ConvertDisplaySpeedToSpeed (uint speed, VehicleType type)
 Convert the given display speed to the (internal) speed.
 
static int DepotActionStringIndex (const Order *order)
 
void DrawOrderString (const Vehicle *v, const Order *order, int order_index, int y, bool selected, bool timetable, int left, int middle, int right)
 Draws an order in order or timetable GUI.
 
static Order GetOrderCmdFromTile (const Vehicle *v, TileIndex tile)
 Get the order command a vehicle can do in a given tile.
 
void ShowOrdersWindow (const Vehicle *v)
 

Variables

static const StringID _station_load_types [][5][5]
 Order load types that could be given to station orders.
 
static const StringID _order_non_stop_drowdown []
 
static const StringID _order_full_load_drowdown []
 
static const StringID _order_unload_drowdown []
 
static const StringID _order_goto_dropdown []
 
static const StringID _order_goto_dropdown_aircraft []
 
static const OrderConditionVariable _order_conditional_variable []
 Variables for conditional orders; this defines the order of appearance in the dropdown box.
 
static const StringID _order_conditional_condition []
 
static const StringID _order_depot_action_dropdown []
 
static const StringID _order_refit_action_dropdown []
 
static constexpr NWidgetPart _nested_orders_train_widgets []
 Nested widget definition for "your" train orders.
 
static WindowDesc _orders_train_desc (WDP_AUTO, "view_vehicle_orders_train", 384, 100, WC_VEHICLE_ORDERS, WC_VEHICLE_VIEW, WDF_CONSTRUCTION, _nested_orders_train_widgets, &OrdersWindow::hotkeys)
 
static constexpr NWidgetPart _nested_orders_widgets []
 Nested widget definition for "your" orders (non-train).
 
static WindowDesc _orders_desc (WDP_AUTO, "view_vehicle_orders", 384, 100, WC_VEHICLE_ORDERS, WC_VEHICLE_VIEW, WDF_CONSTRUCTION, _nested_orders_widgets, &OrdersWindow::hotkeys)
 
static constexpr NWidgetPart _nested_other_orders_widgets []
 Nested widget definition for competitor orders.
 
static WindowDesc _other_orders_desc (WDP_AUTO, "view_vehicle_orders_competitor", 384, 86, WC_VEHICLE_ORDERS, WC_VEHICLE_VIEW, WDF_CONSTRUCTION, _nested_other_orders_widgets, &OrdersWindow::hotkeys)
 

Detailed Description

GUI related to orders.

Definition in file order_gui.cpp.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

Hotkeys for order window.

Definition at line 480 of file order_gui.cpp.

Function Documentation

◆ ConvertDisplaySpeedToSpeed()

uint ConvertDisplaySpeedToSpeed ( uint  speed,
VehicleType  type 
)
extern

Convert the given display speed to the (internal) speed.

Parameters
speedthe speed to convert
Returns
the converted speed.

Definition at line 896 of file strings.cpp.

References Units::c, UnitConversion::FromDisplay(), and GetVelocityUnits().

Referenced by OrdersWindow::OnQueryTextFinished().

◆ ConvertSpeedToDisplaySpeed()

uint ConvertSpeedToDisplaySpeed ( uint  speed,
VehicleType  type 
)
extern

Convert the given (internal) speed to the display speed.

Parameters
speedthe speed to convert
Returns
the converted speed.

Definition at line 883 of file strings.cpp.

References Units::c, GetVelocityUnits(), and UnitConversion::ToDisplay().

Referenced by DrawOrderString(), OrdersWindow::OnClick(), and OrdersWindow::SetStringParameters().

◆ DepotActionStringIndex()

static int DepotActionStringIndex ( const Order order)
static

Definition at line 184 of file order_gui.cpp.

◆ DrawOrderString()

void DrawOrderString ( const Vehicle v,
const Order order,
int  order_index,
int  y,
bool  selected,
bool  timetable,
int  left,
int  middle,
int  right 
)

Draws an order in order or timetable GUI.

Parameters
vVehicle the order belongs to
orderThe order to draw
order_indexIndex of the order in the orders of the vehicle
yY position for drawing
selectedTrue, if the order is selected
timetableTrue, when drawing in the timetable GUI
leftLeft border for text drawing
middleX position between order index and order text
rightRight border for text drawing

Definition at line 214 of file order_gui.cpp.

References _current_text_dir, _settings_client, _station_load_types, CanVehicleUseStation(), ConvertSpeedToDisplaySpeed(), BaseConsist::cur_implicit_order_index, BaseConsist::cur_real_order_index, DrawSprite(), DrawString(), SpecializedVehicle< Aircraft, VEH_AIRCRAFT >::From(), FS_NORMAL, SpecializedStation< Station, false >::Get(), CargoSpec::Get(), GetCharacterHeight(), Order::GetConditionComparator(), Order::GetConditionSkipToOrder(), Order::GetConditionValue(), Order::GetConditionVariable(), Order::GetDepotActionType(), Order::GetDepotOrderType(), Order::GetDestination(), Vehicle::GetFirstOrder(), Order::GetLoadType(), Order::GetNonStopType(), GetOrderDistance(), Aircraft::GetRange(), Order::GetRefitCargo(), GetSpriteSize(), Order::GetStopLocation(), Order::GetType(), Order::GetUnloadType(), Order::GetWaitTime(), ClientSettings::gui, Order::IsAutoRefit(), Order::IsGotoOrder(), Vehicle::IsGroundVehicle(), Order::IsRefit(), Order::IsType(), Order::IsWaitTimetabled(), CargoSpec::name, Order::next, OCC_IS_FALSE, OCC_IS_TRUE, OCV_MAX_SPEED, OCV_UNCONDITIONALLY, ODATFB_HALT, ODATFB_NEAREST_DEPOT, ODATFB_UNBUNCH, ODTFB_SERVICE, ONSF_NO_STOP_AT_DESTINATION_STATION, ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS, SA_FORCE, SA_RIGHT, SetDParam(), SetTimetableParams(), GUISettings::stop_location, TC_NO_SHADE, TD_RTL, BaseVehicle::type, VEH_AIRCRAFT, and VEH_TRAIN.

Referenced by TimetableWindow::DrawTimetablePanel(), and OrdersWindow::DrawWidget().

◆ GetOrderCmdFromTile()

static Order GetOrderCmdFromTile ( const Vehicle v,
TileIndex  tile 
)
static

Get the order command a vehicle can do in a given tile.

Parameters
vVehicle involved.
tileTile being queried.
Returns
The order associated to vehicle v in given tile (or empty order if vehicle can do nothing in the tile).

Definition at line 379 of file order_gui.cpp.

References _ctrl_pressed, _local_company, _settings_client, FACIL_AIRPORT, FACIL_BUS_STOP, FACIL_DOCK, FACIL_TRAIN, FACIL_TRUCK_STOP, BaseStation::facilities, Order::Free(), BaseStation::GetByTile(), Industry::GetByTile(), GetDepotIndex(), GetStationIndex(), ClientSettings::gui, Vehicle::HasConditionalOrder(), Vehicle::HasFullLoadOrder(), Vehicle::HasUnbunchingOrder(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, IsBuoyTile(), IsDepotTypeTile(), Vehicle::IsGroundVehicle(), IsRailWaypointTile(), IsRoadWaypointTile(), IsTileOwner(), IsTileType(), Order::MakeGoToDepot(), Order::MakeGoToStation(), Order::MakeGoToWaypoint(), MP_INDUSTRY, MP_STATION, Industry::neutral_station, GUISettings::new_nonstop, ODATFB_UNBUNCH, ODTFB_PART_OF_ORDERS, OLF_FULL_LOAD_ANY, ONSF_NO_STOP_AT_ANY_STATION, ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS, ONSF_STOP_EVERYWHERE, OSL_PLATFORM_FAR_END, BaseStation::owner, OWNER_NONE, Order::SetDepotActionType(), Order::SetLoadType(), Order::SetNonStopType(), Order::SetStopLocation(), ShowErrorMessage(), GUISettings::stop_location, BaseVehicle::type, VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, VEH_TRAIN, and WL_INFO.

Referenced by OrdersWindow::OnPlaceObject().

◆ ShowOrdersWindow()

void ShowOrdersWindow ( const Vehicle v)

Definition at line 1793 of file order_gui.cpp.

Variable Documentation

◆ _nested_orders_train_widgets

constexpr NWidgetPart _nested_orders_train_widgets[]
staticconstexpr

Nested widget definition for "your" train orders.

Definition at line 1617 of file order_gui.cpp.

◆ _nested_orders_widgets

constexpr NWidgetPart _nested_orders_widgets[]
staticconstexpr

Nested widget definition for "your" orders (non-train).

Definition at line 1694 of file order_gui.cpp.

◆ _nested_other_orders_widgets

constexpr NWidgetPart _nested_other_orders_widgets[]
staticconstexpr
Initial value:
= {
NWidget(WWT_CLOSEBOX, COLOUR_GREY),
NWidget(WWT_CAPTION, COLOUR_GREY, WID_O_CAPTION), SetDataTip(STR_ORDERS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_O_TIMETABLE_VIEW), SetMinimalSize(61, 14), SetDataTip(STR_ORDERS_TIMETABLE_VIEW, STR_ORDERS_TIMETABLE_VIEW_TOOLTIP),
NWidget(WWT_SHADEBOX, COLOUR_GREY),
NWidget(WWT_DEFSIZEBOX, COLOUR_GREY),
NWidget(WWT_STICKYBOX, COLOUR_GREY),
NWidget(WWT_PANEL, COLOUR_GREY, WID_O_ORDER_LIST), SetMinimalSize(372, 72), SetDataTip(0x0, STR_ORDERS_LIST_TOOLTIP), SetResize(1, 1), SetScrollbar(WID_O_SCROLLBAR), EndContainer(),
NWidget(WWT_RESIZEBOX, COLOUR_GREY),
}
constexpr NWidgetPart SetScrollbar(WidgetID index)
Attach a scrollbar to a widget.
constexpr NWidgetPart SetDataTip(uint32_t data, StringID tip)
Widget part function for setting the data and tooltip.
constexpr NWidgetPart SetMinimalSize(int16_t x, int16_t y)
Widget part function for setting the minimal size.
constexpr NWidgetPart NWidget(WidgetType tp, Colours col, WidgetID idx=-1)
Widget part function for starting a new 'real' widget.
constexpr NWidgetPart EndContainer()
Widget part function for denoting the end of a container (horizontal, vertical, WWT_FRAME,...
constexpr NWidgetPart SetResize(int16_t dx, int16_t dy)
Widget part function for setting the resize step.
@ WID_O_TIMETABLE_VIEW
Toggle timetable view.
@ WID_O_SCROLLBAR
Order list scrollbar.
@ WID_O_ORDER_LIST
Order list panel.
@ WID_O_CAPTION
Caption of the window.
@ WWT_PUSHTXTBTN
Normal push-button (no toggle button) with text caption.
@ NWID_HORIZONTAL
Horizontal container.
Definition widget_type.h:75
@ WWT_PANEL
Simple depressed panel.
Definition widget_type.h:50
@ WWT_STICKYBOX
Sticky box (at top-right of a window, after WWT_DEFSIZEBOX)
Definition widget_type.h:66
@ WWT_SHADEBOX
Shade box (at top-right of a window, between WWT_DEBUGBOX and WWT_DEFSIZEBOX)
Definition widget_type.h:64
@ WWT_CAPTION
Window caption (window title between closebox and stickybox)
Definition widget_type.h:61
@ NWID_VSCROLLBAR
Vertical scrollbar.
Definition widget_type.h:85
@ NWID_VERTICAL
Vertical container.
Definition widget_type.h:77
@ WWT_CLOSEBOX
Close box (at top-left of a window)
Definition widget_type.h:69
@ WWT_RESIZEBOX
Resize box (normally at bottom-right of a window)
Definition widget_type.h:68
@ WWT_DEFSIZEBOX
Default window size box (at top-right of a window, between WWT_SHADEBOX and WWT_STICKYBOX)
Definition widget_type.h:65

Nested widget definition for competitor orders.

Definition at line 1767 of file order_gui.cpp.

◆ _order_conditional_condition

const StringID _order_conditional_condition[]
static
Initial value:
= {
STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS,
STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS,
STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN,
STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS,
STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN,
STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS,
STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE,
STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE,
}

Definition at line 163 of file order_gui.cpp.

◆ _order_conditional_variable

const OrderConditionVariable _order_conditional_variable[]
static
Initial value:
= {
}
@ OCV_AGE
Skip based on the age.
Definition order_type.h:117
@ OCV_UNCONDITIONALLY
Always skip.
Definition order_type.h:119
@ OCV_MAX_SPEED
Skip based on the maximum speed.
Definition order_type.h:116
@ OCV_LOAD_PERCENTAGE
Skip based on the amount of load.
Definition order_type.h:114
@ OCV_REQUIRES_SERVICE
Skip when the vehicle requires service.
Definition order_type.h:118
@ OCV_RELIABILITY
Skip based on the reliability.
Definition order_type.h:115
@ OCV_REMAINING_LIFETIME
Skip based on the remaining lifetime.
Definition order_type.h:120
@ OCV_MAX_RELIABILITY
Skip based on the maximum reliability.
Definition order_type.h:121

Variables for conditional orders; this defines the order of appearance in the dropdown box.

Definition at line 152 of file order_gui.cpp.

Referenced by OrdersWindow::OnClick(), and OrdersWindow::UpdateWidgetSize().

◆ _order_depot_action_dropdown

const StringID _order_depot_action_dropdown[]
static
Initial value:
= {
STR_ORDER_DROP_GO_ALWAYS_DEPOT,
STR_ORDER_DROP_SERVICE_DEPOT,
STR_ORDER_DROP_HALT_DEPOT,
STR_ORDER_DROP_UNBUNCH,
}

Definition at line 177 of file order_gui.cpp.

◆ _order_full_load_drowdown

const StringID _order_full_load_drowdown[]
static
Initial value:
= {
STR_ORDER_DROP_LOAD_IF_POSSIBLE,
STR_EMPTY,
STR_ORDER_DROP_FULL_LOAD_ALL,
STR_ORDER_DROP_FULL_LOAD_ANY,
STR_ORDER_DROP_NO_LOADING,
}

Definition at line 121 of file order_gui.cpp.

◆ _order_goto_dropdown

const StringID _order_goto_dropdown[]
static
Initial value:
= {
STR_ORDER_GO_TO,
STR_ORDER_GO_TO_NEAREST_DEPOT,
STR_ORDER_CONDITIONAL,
STR_ORDER_SHARE,
}

Definition at line 137 of file order_gui.cpp.

◆ _order_goto_dropdown_aircraft

const StringID _order_goto_dropdown_aircraft[]
static
Initial value:
= {
STR_ORDER_GO_TO,
STR_ORDER_GO_TO_NEAREST_HANGAR,
STR_ORDER_CONDITIONAL,
STR_ORDER_SHARE,
}

Definition at line 144 of file order_gui.cpp.

◆ _order_non_stop_drowdown

const StringID _order_non_stop_drowdown[]
static
Initial value:
= {
STR_ORDER_GO_TO,
STR_ORDER_GO_NON_STOP_TO,
STR_ORDER_GO_VIA,
STR_ORDER_GO_NON_STOP_VIA,
}

Definition at line 114 of file order_gui.cpp.

◆ _order_refit_action_dropdown

const StringID _order_refit_action_dropdown[]
static
Initial value:
= {
STR_ORDER_DROP_REFIT_AUTO,
STR_ORDER_DROP_REFIT_AUTO_ANY,
}

Definition at line 197 of file order_gui.cpp.

◆ _order_unload_drowdown

const StringID _order_unload_drowdown[]
static
Initial value:
= {
STR_ORDER_DROP_UNLOAD_IF_ACCEPTED,
STR_ORDER_DROP_UNLOAD,
STR_ORDER_DROP_TRANSFER,
STR_EMPTY,
STR_ORDER_DROP_NO_UNLOADING,
}

Definition at line 129 of file order_gui.cpp.

◆ _station_load_types

const StringID _station_load_types[][5][5]
static

Order load types that could be given to station orders.

Definition at line 44 of file order_gui.cpp.

Referenced by DrawOrderString().