OpenTTD Source  14.0-beta3
dock_gui.cpp File Reference
#include "stdafx.h"
#include "terraform_gui.h"
#include "window_gui.h"
#include "station_gui.h"
#include "command_func.h"
#include "water.h"
#include "window_func.h"
#include "vehicle_func.h"
#include "sound_func.h"
#include "viewport_func.h"
#include "gfx_func.h"
#include "company_func.h"
#include "slope_func.h"
#include "tilehighlight_func.h"
#include "company_base.h"
#include "hotkeys.h"
#include "gui.h"
#include "zoom_func.h"
#include "tunnelbridge_cmd.h"
#include "dock_cmd.h"
#include "station_cmd.h"
#include "water_cmd.h"
#include "waypoint_cmd.h"
#include "timer/timer.h"
#include "timer/timer_game_calendar.h"
#include "widgets/dock_widget.h"
#include "table/sprites.h"
#include "table/strings.h"
#include "safeguards.h"

Go to the source code of this file.

Data Structures

struct  BuildDocksToolbarWindow
 Toolbar window for constructing water infrastructure. More...
 
struct  BuildDocksStationWindow
 
struct  BuildDocksDepotWindow
 

Enumerations

enum  BuildDockStationWidgets {
  BDSW_BACKGROUND, BDSW_LT_OFF, BDSW_LT_ON, BDSW_INFO,
  BDSW_ACCEPTANCE
}
 Widget numbers of the build-dock GUI. More...
 

Functions

static void ShowBuildDockStationPicker (Window *parent)
 
static void ShowBuildDocksDepotPicker (Window *parent)
 
void CcBuildDocks (Commands, const CommandCost &result, TileIndex tile)
 
void CcPlaySound_CONSTRUCTION_WATER (Commands, const CommandCost &result, TileIndex tile)
 
static TileIndex GetOtherAqueductEnd (TileIndex tile_from, TileIndex *tile_to=nullptr)
 Gets the other end of the aqueduct, if possible. More...
 
WindowShowBuildDocksToolbar ()
 Open the build water toolbar window. More...
 
WindowShowBuildDocksScenToolbar ()
 Open the build water toolbar window for the scenario editor. More...
 
void InitializeDockGui ()
 

Variables

static Axis _ship_depot_direction
 
static constexpr NWidgetPart _nested_build_docks_toolbar_widgets []
 Nested widget parts of docks toolbar, game version. More...
 
static WindowDesc _build_docks_toolbar_desc (__FILE__, __LINE__, WDP_ALIGN_TOOLBAR, "toolbar_water", 0, 0, WC_BUILD_TOOLBAR, WC_NONE, WDF_CONSTRUCTION, std::begin(_nested_build_docks_toolbar_widgets), std::end(_nested_build_docks_toolbar_widgets), &BuildDocksToolbarWindow::hotkeys)
 
static constexpr NWidgetPart _nested_build_docks_scen_toolbar_widgets []
 Nested widget parts of docks toolbar, scenario editor version. More...
 
static WindowDesc _build_docks_scen_toolbar_desc (__FILE__, __LINE__, WDP_AUTO, "toolbar_water_scen", 0, 0, WC_SCEN_BUILD_TOOLBAR, WC_NONE, WDF_CONSTRUCTION, std::begin(_nested_build_docks_scen_toolbar_widgets), std::end(_nested_build_docks_scen_toolbar_widgets))
 Window definition for the build docks in scenario editor window.
 
static constexpr NWidgetPart _nested_build_dock_station_widgets []
 Nested widget parts of a build dock station window. More...
 
static WindowDesc _build_dock_station_desc (__FILE__, __LINE__, WDP_AUTO, nullptr, 0, 0, WC_BUILD_STATION, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, std::begin(_nested_build_dock_station_widgets), std::end(_nested_build_dock_station_widgets))
 
static constexpr NWidgetPart _nested_build_docks_depot_widgets []
 
static WindowDesc _build_docks_depot_desc (__FILE__, __LINE__, WDP_AUTO, nullptr, 0, 0, WC_BUILD_DEPOT, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, std::begin(_nested_build_docks_depot_widgets), std::end(_nested_build_docks_depot_widgets))
 

Detailed Description

GUI to create amazing water objects.

Definition in file dock_gui.cpp.

Enumeration Type Documentation

◆ BuildDockStationWidgets

Widget numbers of the build-dock GUI.

Enumerator
BDSW_BACKGROUND 

Background panel.

BDSW_LT_OFF 

'Off' button of coverage high light.

BDSW_LT_ON 

'On' button of coverage high light.

BDSW_INFO 

'Coverage highlight' label.

BDSW_ACCEPTANCE 

Acceptance info.

Definition at line 409 of file dock_gui.cpp.

Function Documentation

◆ GetOtherAqueductEnd()

static TileIndex GetOtherAqueductEnd ( TileIndex  tile_from,
TileIndex tile_to = nullptr 
)
static

Gets the other end of the aqueduct, if possible.

Parameters
tile_fromThe begin tile for the aqueduct.
[out]tile_toThe tile till where to show a selection for the aqueduct.
Returns
The other end of the aqueduct, or otherwise a tile in line with the aqueduct to cause the right error message.

Definition at line 68 of file dock_gui.cpp.

References _settings_game, GameSettings::construction, DistanceFromEdgeDir(), GetInclinedSlopeDirection(), GetTileMaxZ(), GetTileSlope(), IsValidDiagDirection(), IsValidTile(), ConstructionSettings::max_bridge_length, ReverseDiagDir(), TILE_ADD, TILE_ADDXY, TileOffsByDiagDir(), TileX(), and TileY().

◆ ShowBuildDocksScenToolbar()

Window* ShowBuildDocksScenToolbar ( )

Open the build water toolbar window for the scenario editor.

Returns
newly opened water toolbar, or nullptr if the toolbar could not be opened.

Definition at line 403 of file dock_gui.cpp.

References _build_docks_scen_toolbar_desc, and TRANSPORT_WATER.

◆ ShowBuildDocksToolbar()

Window* ShowBuildDocksToolbar ( )

Open the build water toolbar window.

If the terraform toolbar is linked to the toolbar, that window is also opened.

Returns
newly opened water toolbar, or nullptr if the toolbar could not be opened.

Definition at line 362 of file dock_gui.cpp.

References _local_company, CloseWindowByClass(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), and WC_BUILD_TOOLBAR.

Referenced by MenuClickBuildWater().

Variable Documentation

◆ _nested_build_dock_station_widgets

constexpr NWidgetPart _nested_build_dock_station_widgets[]
staticconstexpr
Initial value:
= {
NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN),
NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_STATION_BUILD_DOCK_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_PANEL, COLOUR_DARK_GREEN, BDSW_BACKGROUND),
NWidget(WWT_LABEL, COLOUR_DARK_GREEN, BDSW_INFO), SetDataTip(STR_STATION_BUILD_COVERAGE_AREA_TITLE, STR_NULL), SetFill(1, 0),
NWidget(WWT_TEXTBTN, COLOUR_GREY, BDSW_LT_OFF), SetMinimalSize(60, 12), SetFill(1, 0), SetDataTip(STR_STATION_BUILD_COVERAGE_OFF, STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP),
NWidget(WWT_TEXTBTN, COLOUR_GREY, BDSW_LT_ON), SetMinimalSize(60, 12), SetFill(1, 0), SetDataTip(STR_STATION_BUILD_COVERAGE_ON, STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP),
}

Nested widget parts of a build dock station window.

Definition at line 482 of file dock_gui.cpp.

◆ _nested_build_docks_depot_widgets

constexpr NWidgetPart _nested_build_docks_depot_widgets[]
staticconstexpr
Initial value:
= {
NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN),
NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_DEPOT_BUILD_SHIP_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BDD_BACKGROUND),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BDD_X), SetMinimalSize(98, 66), SetDataTip(0x0, STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BDD_Y), SetMinimalSize(98, 66), SetDataTip(0x0, STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP),
}

Definition at line 583 of file dock_gui.cpp.

◆ _nested_build_docks_scen_toolbar_widgets

constexpr NWidgetPart _nested_build_docks_scen_toolbar_widgets[]
staticconstexpr
Initial value:
= {
NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN),
NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_WATERWAYS_TOOLBAR_CAPTION_SE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN),
NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_DT_CANAL), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_BUILD_CANAL, STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP),
NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_DT_LOCK), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_BUILD_LOCK, STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetMinimalSize(5, 22), SetFill(1, 1), EndContainer(),
NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_DT_DEMOLISH), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_DYNAMITE, STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC),
NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_DT_RIVER), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_BUILD_RIVER, STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP),
NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_DT_BUILD_AQUEDUCT), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_AQUEDUCT, STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP),
}

Nested widget parts of docks toolbar, scenario editor version.

Positions of WID_DT_DEPOT, WID_DT_STATION, and WID_DT_BUOY widgets have changed.

Definition at line 374 of file dock_gui.cpp.

◆ _nested_build_docks_toolbar_widgets

constexpr NWidgetPart _nested_build_docks_toolbar_widgets[]
staticconstexpr
Initial value:
= {
NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN),
NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_WATERWAYS_TOOLBAR_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN),
NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_DT_CANAL), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_BUILD_CANAL, STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP),
NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_DT_LOCK), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_BUILD_LOCK, STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetMinimalSize(5, 22), SetFill(1, 1), EndContainer(),
NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_DT_DEMOLISH), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_DYNAMITE, STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC),
NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_DT_DEPOT), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_SHIP_DEPOT, STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP),
NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_DT_STATION), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_SHIP_DOCK, STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP),
NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_DT_BUOY), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_BUOY, STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP),
NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_DT_BUILD_AQUEDUCT), SetMinimalSize(23, 22), SetFill(0, 1), SetDataTip(SPR_IMG_AQUEDUCT, STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP),
}

Nested widget parts of docks toolbar, game version.

Position of WID_DT_RIVER widget has changed.

Definition at line 329 of file dock_gui.cpp.

SetFill
constexpr NWidgetPart SetFill(uint16_t fill_x, uint16_t fill_y)
Widget part function for setting filling.
Definition: widget_type.h:1141
WID_DT_DEMOLISH
@ WID_DT_DEMOLISH
Demolish aka dynamite button.
Definition: dock_widget.h:24
WWT_STICKYBOX
@ WWT_STICKYBOX
Sticky box (at top-right of a window, after WWT_DEFSIZEBOX)
Definition: widget_type.h:68
WID_DT_BUOY
@ WID_DT_BUOY
Build buoy button.
Definition: dock_widget.h:27
WWT_CAPTION
@ WWT_CAPTION
Window caption (window title between closebox and stickybox)
Definition: widget_type.h:63
WWT_IMGBTN
@ WWT_IMGBTN
(Toggle) Button with image
Definition: widget_type.h:54
WWT_LABEL
@ WWT_LABEL
Centered label.
Definition: widget_type.h:59
NWID_HORIZONTAL
@ NWID_HORIZONTAL
Horizontal container.
Definition: widget_type.h:77
NWID_HORIZONTAL_LTR
@ NWID_HORIZONTAL_LTR
Horizontal container that doesn't change the order of the widgets for RTL languages.
Definition: widget_type.h:78
EndContainer
constexpr NWidgetPart EndContainer()
Widget part function for denoting the end of a container (horizontal, vertical, WWT_FRAME,...
Definition: widget_type.h:1151
WWT_EMPTY
@ WWT_EMPTY
Empty widget, place holder to reserve space in widget tree.
Definition: widget_type.h:50
NC_EQUALSIZE
@ NC_EQUALSIZE
Value of the NCB_EQUALSIZE flag.
Definition: widget_type.h:508
SetPadding
constexpr NWidgetPart SetPadding(uint8_t top, uint8_t right, uint8_t bottom, uint8_t left)
Widget part function for setting additional space around a widget.
Definition: widget_type.h:1188
SetResize
constexpr NWidgetPart SetResize(int16_t dx, int16_t dy)
Widget part function for setting the resize step.
Definition: widget_type.h:1086
WID_DT_STATION
@ WID_DT_STATION
Build station button.
Definition: dock_widget.h:26
NWidget
constexpr NWidgetPart NWidget(WidgetType tp, Colours col, WidgetID idx=-1)
Widget part function for starting a new 'real' widget.
Definition: widget_type.h:1258
WID_DT_RIVER
@ WID_DT_RIVER
Build river button (in scenario editor).
Definition: dock_widget.h:28
WID_DT_LOCK
@ WID_DT_LOCK
Build lock button.
Definition: dock_widget.h:23
BDSW_INFO
@ BDSW_INFO
'Coverage highlight' label.
Definition: dock_gui.cpp:413
BDSW_ACCEPTANCE
@ BDSW_ACCEPTANCE
Acceptance info.
Definition: dock_gui.cpp:414
WID_BDD_X
@ WID_BDD_X
X-direction button.
Definition: dock_widget.h:16
NWID_VERTICAL
@ NWID_VERTICAL
Vertical container.
Definition: widget_type.h:79
WidgetDimensions::unscaled
static const WidgetDimensions unscaled
Unscaled widget dimensions.
Definition: window_gui.h:67
WWT_CLOSEBOX
@ WWT_CLOSEBOX
Close box (at top-left of a window)
Definition: widget_type.h:71
WID_BDD_Y
@ WID_BDD_Y
Y-direction button.
Definition: dock_widget.h:17
SetPIP
constexpr NWidgetPart SetPIP(uint8_t pre, uint8_t inter, uint8_t post)
Widget part function for setting a pre/inter/post spaces.
Definition: widget_type.h:1220
BDSW_LT_OFF
@ BDSW_LT_OFF
'Off' button of coverage high light.
Definition: dock_gui.cpp:411
WID_BDD_BACKGROUND
@ WID_BDD_BACKGROUND
Background of the window.
Definition: dock_widget.h:15
WWT_PANEL
@ WWT_PANEL
Simple depressed panel.
Definition: widget_type.h:52
WID_DT_BUILD_AQUEDUCT
@ WID_DT_BUILD_AQUEDUCT
Build aqueduct button.
Definition: dock_widget.h:29
BDSW_BACKGROUND
@ BDSW_BACKGROUND
Background panel.
Definition: dock_gui.cpp:410
BDSW_LT_ON
@ BDSW_LT_ON
'On' button of coverage high light.
Definition: dock_gui.cpp:412
WID_DT_CANAL
@ WID_DT_CANAL
Build canal button.
Definition: dock_widget.h:22
SetMinimalSize
constexpr NWidgetPart SetMinimalSize(int16_t x, int16_t y)
Widget part function for setting the minimal size.
Definition: widget_type.h:1097
SetPIPRatio
constexpr NWidgetPart SetPIPRatio(uint8_t ratio_pre, uint8_t ratio_inter, uint8_t ratio_post)
Widget part function for setting a pre/inter/post ratio.
Definition: widget_type.h:1232
SetDataTip
constexpr NWidgetPart SetDataTip(uint32_t data, StringID tip)
Widget part function for setting the data and tooltip.
Definition: widget_type.h:1162
SetMinimalTextLines
constexpr NWidgetPart SetMinimalTextLines(uint8_t lines, uint8_t spacing, FontSize size=FS_NORMAL)
Widget part function for setting the minimal text lines.
Definition: widget_type.h:1109
WID_DT_DEPOT
@ WID_DT_DEPOT
Build depot button.
Definition: dock_widget.h:25
WWT_TEXTBTN
@ WWT_TEXTBTN
(Toggle) Button with text
Definition: widget_type.h:57