OpenTTD Source 20250924-master-gbec4e71d53
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.
 
void ShowBuildBridgeWindow (TileIndex start, TileIndex end, TransportType transport_type, uint8_t road_rail_type)
 Prepare the data for the build a bridge window.
 

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.
 
static WindowDesc _build_bridge_desc (WDP_AUTO, "build_bridge", 200, 114, WC_BUILD_BRIDGE, WC_BUILD_TOOLBAR, WindowDefaultFlag::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.

Typedef Documentation

◆ GUIBridgeList

List of bridges, used in BuildBridgeWindow.

Definition at line 47 of 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.

References _settings_client, SoundSettings::confirm, ConnectRoadToStructure(), CommandCost::Failed(), GetTunnelBridgeDirection(), ReverseDiagDir(), SND_27_CONSTRUCTION_BRIDGE, ClientSettings::sound, and TRANSPORT_ROAD.

Referenced by BuildDocksToolbarWindow::OnPlaceObject(), and 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 357 of file bridge_gui.cpp.

References _build_bridge_desc, _ctrl_pressed, _last_railbridge_type, _last_roadbridge_type, CalcBridgeLenCostFactor(), CcBuildBridge(), CheckBridgeAvailability(), CloseWindowByClass(), CommandFlagsToDCFlags(), CommandCost::Failed(), GetBridgeSpec(), CommandCost::GetCost(), GetEncodedString(), GetTunnelBridgeLength(), INVALID_ROADTYPE, IsBridgeTile(), MAX_BRIDGES, BridgeSpec::price, QueryCost, RailBuildCost(), RoadBuildCost(), ShowErrorMessage(), CommandCost::Succeeded(), TILE_SIZE, TileX(), TileY(), TRANSPORT_RAIL, TRANSPORT_ROAD, and WC_BUILD_BRIDGE.

Referenced by BuildRailToolbarWindow::OnPlaceMouseUp(), and BuildRoadToolbarWindow::OnPlaceMouseUp().

Variable Documentation

◆ _last_railbridge_type

BridgeType _last_railbridge_type = 0
static

The type of the last built rail bridge.

Definition at line 34 of file bridge_gui.cpp.

Referenced by ShowBuildBridgeWindow().

◆ _last_roadbridge_type

BridgeType _last_roadbridge_type = 0
static

The type of the last built road bridge.

Definition at line 36 of file bridge_gui.cpp.

Referenced by ShowBuildBridgeWindow().

◆ _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), SetStringTip(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), SetStringTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER),
NWidget(WWT_DROPDOWN, COLOUR_DARK_GREEN, WID_BBS_DROPDOWN_CRITERIA), SetFill(1, 0), SetToolTip(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.
@ WID_BBS_BRIDGE_LIST
List of bridges.
@ WID_BBS_DROPDOWN_ORDER
Direction of sort dropdown.
@ WID_BBS_SCROLLBAR
Scrollbar of the list.
@ WID_BBS_CAPTION
Caption of the window.
constexpr NWidgetPart SetMatrixDataTip(uint32_t cols, uint32_t rows, StringID tip={})
Widget part function for setting the data and tooltip of WWT_MATRIX widgets.
constexpr NWidgetPart SetFill(uint16_t fill_x, uint16_t fill_y)
Widget part function for setting filling.
constexpr NWidgetPart SetScrollbar(WidgetID index)
Attach a scrollbar to a widget.
constexpr NWidgetPart SetStringTip(StringID string, StringID tip={})
Widget part function for setting the string and tooltip.
constexpr NWidgetPart SetToolTip(StringID tip)
Widget part function for setting tooltip and clearing the widget data.
constexpr NWidgetPart EndContainer()
Widget part function for denoting the end of a container (horizontal, vertical, WWT_FRAME,...
constexpr NWidgetPart NWidget(WidgetType tp, Colours col, WidgetID idx=INVALID_WIDGET)
Widget part function for starting a new 'real' widget.
constexpr NWidgetPart SetResize(int16_t dx, int16_t dy)
Widget part function for setting the resize step.
@ NWID_HORIZONTAL
Horizontal container.
Definition widget_type.h:67
@ WWT_TEXTBTN
(Toggle) Button with text
Definition widget_type.h:45
@ WWT_MATRIX
Grid of rows and columns.
Definition widget_type.h:51
@ WWT_CAPTION
Window caption (window title between closebox and stickybox)
Definition widget_type.h:53
@ NWID_VSCROLLBAR
Vertical scrollbar.
Definition widget_type.h:77
@ NWID_VERTICAL
Vertical container.
Definition widget_type.h:69
@ WWT_CLOSEBOX
Close box (at top-left of a window)
Definition widget_type.h:61
@ WWT_RESIZEBOX
Resize box (normally at bottom-right of a window)
Definition widget_type.h:60
@ WWT_DEFSIZEBOX
Default window size box (at top-right of a window, between WWT_SHADEBOX and WWT_STICKYBOX)
Definition widget_type.h:57
@ WWT_DROPDOWN
Drop down list.
Definition widget_type.h:62

Widgets of the bridge gui.

Definition at line 312 of file bridge_gui.cpp.