OpenTTD Source  20241108-master-g80f628063a
bridge_gui.cpp File Reference

Graphical user interface for bridge construction. More...

#include "stdafx.h"
#include "error.h"
#include "command_func.h"
#include "rail.h"
#include "road.h"
#include "strings_func.h"
#include "window_func.h"
#include "sound_func.h"
#include "gfx_func.h"
#include "tunnelbridge.h"
#include "sortlist_type.h"
#include "dropdown_func.h"
#include "core/geometry_func.hpp"
#include "tunnelbridge_map.h"
#include "road_gui.h"
#include "tunnelbridge_cmd.h"
#include "widgets/bridge_widget.h"
#include "table/strings.h"
#include "safeguards.h"

Go to the source code of this file.

Data Structures

struct  BuildBridgeData
 Carriage for the data we need if we want to build a bridge. More...
 
class  BuildBridgeWindow
 Window class for handling the bridge-build GUI. More...
 

Typedefs

typedef GUIList< BuildBridgeDataGUIBridgeList
 List of bridges, used in BuildBridgeWindow.
 

Functions

void CcBuildBridge (Commands, const CommandCost &result, TileIndex end_tile, TileIndex tile_start, TransportType transport_type, BridgeType, uint8_t)
 Callback executed after a build Bridge CMD has been called. More...
 
void ShowBuildBridgeWindow (TileIndex start, TileIndex end, TransportType transport_type, uint8_t road_rail_type)
 Prepare the data for the build a bridge window. More...
 

Variables

static BridgeType _last_railbridge_type = 0
 The type of the last built rail bridge.
 
static BridgeType _last_roadbridge_type = 0
 The type of the last built road bridge.
 
static constexpr NWidgetPart _nested_build_bridge_widgets []
 Widgets of the bridge gui. More...
 
static WindowDesc _build_bridge_desc (WDP_AUTO, "build_bridge", 200, 114, WC_BUILD_BRIDGE, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_build_bridge_widgets)
 Window definition for the rail bridge selection window.
 

Detailed Description

Graphical user interface for bridge construction.

Definition in file bridge_gui.cpp.

Function Documentation

◆ CcBuildBridge()

void CcBuildBridge ( Commands  cmd,
const CommandCost result,
TileIndex  end_tile,
TileIndex  tile_start,
TransportType  transport_type,
BridgeType  ,
uint8_t   
)

Callback executed after a build Bridge CMD has been called.

Parameters
resultWhether the build succeeded
end_tileEnd tile of the bridge.
tile_startstart tile
transport_typetransport type.

Definition at line 57 of file bridge_gui.cpp.

Referenced by ShowBuildBridgeWindow().

◆ ShowBuildBridgeWindow()

void ShowBuildBridgeWindow ( TileIndex  start,
TileIndex  end,
TransportType  transport_type,
uint8_t  road_rail_type 
)

Prepare the data for the build a bridge window.

If we can't build a bridge under the given conditions show an error message.

Parameters
startThe start tile of the bridge
endThe end tile of the bridge
transport_typeThe transport type
road_rail_typeThe road/rail type

Definition at line 354 of file bridge_gui.cpp.

References _ctrl_pressed, _last_railbridge_type, _last_roadbridge_type, CalcBridgeLenCostFactor(), CcBuildBridge(), CheckBridgeAvailability(), CloseWindowByClass(), CommandFlagsToDCFlags(), DC_QUERY_COST, CommandCost::Failed(), CommandCost::GetErrorMessage(), GetTunnelBridgeLength(), INVALID_ROADTYPE, INVALID_STRING_ID, IsBridgeTile(), TRANSPORT_RAIL, TRANSPORT_ROAD, and WC_BUILD_BRIDGE.

Variable Documentation

◆ _nested_build_bridge_widgets

constexpr NWidgetPart _nested_build_bridge_widgets[]
staticconstexpr
Initial value:
= {
NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN),
NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, WID_BBS_CAPTION), SetDataTip(STR_SELECT_RAIL_BRIDGE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_DEFSIZEBOX, COLOUR_DARK_GREEN),
NWidget(WWT_TEXTBTN, COLOUR_DARK_GREEN, WID_BBS_DROPDOWN_ORDER), SetFill(1, 0), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER),
NWidget(WWT_DROPDOWN, COLOUR_DARK_GREEN, WID_BBS_DROPDOWN_CRITERIA), SetFill(1, 0), SetDataTip(0x0, STR_TOOLTIP_SORT_CRITERIA),
NWidget(WWT_MATRIX, COLOUR_DARK_GREEN, WID_BBS_BRIDGE_LIST), SetFill(1, 0), SetResize(0, 22), SetMatrixDataTip(1, 0, STR_SELECT_BRIDGE_SELECTION_TOOLTIP), SetScrollbar(WID_BBS_SCROLLBAR),
NWidget(WWT_RESIZEBOX, COLOUR_DARK_GREEN),
}
@ WID_BBS_DROPDOWN_CRITERIA
Criteria of sort dropdown.
Definition: bridge_widget.h:17
@ WID_BBS_BRIDGE_LIST
List of bridges.
Definition: bridge_widget.h:18
@ WID_BBS_DROPDOWN_ORDER
Direction of sort dropdown.
Definition: bridge_widget.h:16
@ WID_BBS_SCROLLBAR
Scrollbar of the list.
Definition: bridge_widget.h:19
@ WID_BBS_CAPTION
Caption of the window.
Definition: bridge_widget.h:15
constexpr NWidgetPart SetFill(uint16_t fill_x, uint16_t fill_y)
Widget part function for setting filling.
Definition: widget_type.h:1181
constexpr NWidgetPart SetScrollbar(WidgetID index)
Attach a scrollbar to a widget.
Definition: widget_type.h:1284
constexpr NWidgetPart SetDataTip(uint32_t data, StringID tip)
Widget part function for setting the data and tooltip.
Definition: widget_type.h:1202
constexpr NWidgetPart NWidget(WidgetType tp, Colours col, WidgetID idx=-1)
Widget part function for starting a new 'real' widget.
Definition: widget_type.h:1309
constexpr NWidgetPart SetMatrixDataTip(uint8_t cols, uint8_t rows, StringID tip)
Widget part function for setting the data and tooltip of WWT_MATRIX widgets.
Definition: widget_type.h:1214
constexpr NWidgetPart EndContainer()
Widget part function for denoting the end of a container (horizontal, vertical, WWT_FRAME,...
Definition: widget_type.h:1191
constexpr NWidgetPart SetResize(int16_t dx, int16_t dy)
Widget part function for setting the resize step.
Definition: widget_type.h:1126
@ NWID_HORIZONTAL
Horizontal container.
Definition: widget_type.h:75
@ WWT_TEXTBTN
(Toggle) Button with text
Definition: widget_type.h:55
@ WWT_MATRIX
Grid of rows and columns.
Definition: widget_type.h:59
@ WWT_CAPTION
Window caption (window title between closebox and stickybox)
Definition: widget_type.h:61
@ NWID_VSCROLLBAR
Vertical scrollbar.
Definition: widget_type.h:84
@ 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
@ WWT_DROPDOWN
Drop down list.
Definition: widget_type.h:70

Widgets of the bridge gui.

Definition at line 309 of file bridge_gui.cpp.