# rail_gui.cpp File Reference

File for dealing with rail construction user interface. More...

`#include "stdafx.h"`
`#include "gui.h"`
`#include "window_gui.h"`
`#include "station_gui.h"`
`#include "terraform_gui.h"`
`#include "viewport_func.h"`
`#include "command_func.h"`
`#include "waypoint_func.h"`
`#include "newgrf_station.h"`
`#include "company_base.h"`
`#include "strings_func.h"`
`#include "functions.h"`
`#include "window_func.h"`
`#include "date_func.h"`
`#include "sound_func.h"`
`#include "company_func.h"`
`#include "widgets/dropdown_type.h"`
`#include "tunnelbridge.h"`
`#include "tilehighlight_func.h"`
`#include "spritecache.h"`
`#include "core/geometry_func.hpp"`
`#include "station_map.h"`
`#include "tunnelbridge_map.h"`
`#include "table/sprites.h"`
`#include "table/strings.h"`

Go to the source code of this file.

## Data Structures
struct | RailStationGUISettings
struct | RailBuildingGUIButtonData
| Data associated with a push button in the build rail toolbar window. More...
struct | BuildRailToolbarWindow
| Based on the widget clicked, update the status of the 'remove' button. More...
struct | BuildRailStationWindow
struct | BuildSignalWindow
struct | BuildRailDepotWindow
struct | BuildRailWaypointWindow
## Typedefs
typedef void | OnButtonClick (Window *w)
## Enumerations
enum | RailToolbarWidgets { RTW_CAPTION, RTW_BUILD_NS, RTW_BUILD_X, RTW_BUILD_EW, RTW_BUILD_Y, RTW_AUTORAIL, RTW_DEMOLISH, RTW_BUILD_DEPOT, RTW_BUILD_WAYPOINT, RTW_BUILD_STATION, RTW_BUILD_SIGNALS, RTW_BUILD_BRIDGE, RTW_BUILD_TUNNEL, RTW_REMOVE, RTW_CONVERT_RAIL }
| Enum referring to the widgets of the build rail toolbar.
enum | BuildRailStationWidgets { BRSW_BACKGROUND, BRSW_PLATFORM_DIR_X, BRSW_PLATFORM_DIR_Y, BRSW_PLATFORM_NUM_1, BRSW_PLATFORM_NUM_2, BRSW_PLATFORM_NUM_3, BRSW_PLATFORM_NUM_4, BRSW_PLATFORM_NUM_5, BRSW_PLATFORM_NUM_6, BRSW_PLATFORM_NUM_7, BRSW_PLATFORM_LEN_1, BRSW_PLATFORM_LEN_2, BRSW_PLATFORM_LEN_3, BRSW_PLATFORM_LEN_4, BRSW_PLATFORM_LEN_5, BRSW_PLATFORM_LEN_6, BRSW_PLATFORM_LEN_7, BRSW_PLATFORM_DRAG_N_DROP, BRSW_HIGHLIGHT_OFF, BRSW_HIGHLIGHT_ON, BRSW_NEWST_DROPDOWN, BRSW_NEWST_LIST, BRSW_NEWST_SCROLL, BRSW_PLATFORM_NUM_BEGIN = BRSW_PLATFORM_NUM_1 - 1, BRSW_PLATFORM_LEN_BEGIN = BRSW_PLATFORM_LEN_1 - 1 }
| Enum referring to the widgets of the rail stations window.
enum | BuildSignalWidgets { BSW_SEMAPHORE_NORM, BSW_SEMAPHORE_ENTRY, BSW_SEMAPHORE_EXIT, BSW_SEMAPHORE_COMBO, BSW_SEMAPHORE_PBS, BSW_SEMAPHORE_PBS_OWAY, BSW_ELECTRIC_NORM, BSW_ELECTRIC_ENTRY, BSW_ELECTRIC_EXIT, BSW_ELECTRIC_COMBO, BSW_ELECTRIC_PBS, BSW_ELECTRIC_PBS_OWAY, BSW_CONVERT, BSW_DRAG_SIGNALS_DENSITY, BSW_DRAG_SIGNALS_DENSITY_LABEL, BSW_DRAG_SIGNALS_DENSITY_DECREASE, BSW_DRAG_SIGNALS_DENSITY_INCREASE }
| Enum referring to the widgets of the signal window.
enum | BuildRailDepotWidgets { BRDW_DEPOT_NE, BRDW_DEPOT_SE, BRDW_DEPOT_SW, BRDW_DEPOT_NW }
| Enum referring to the widgets of the build rail depot window.
enum | BuildRailWaypointWidgets { BRWW_WAYPOINT_1, BRWW_WAYPOINT_2, BRWW_WAYPOINT_3, BRWW_WAYPOINT_4, BRWW_WAYPOINT_5, BRWW_SCROLL }
| Enum referring to the widgets of the build NewGRF rail waypoint window.
## Functions
static void | HandleStationPlacement (TileIndex start, TileIndex end)
static void | ShowBuildTrainDepotPicker (Window *parent)
static void | ShowBuildWaypointPicker (Window *parent)
static void | ShowStationBuilder (Window *parent)
| Open station build window.
static void | ShowSignalBuilder (Window *parent)
| Open the signal selection window.
void | CcPlaySound1E (const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
static void | GenericPlaceRail (TileIndex tile, int cmd)
static void | PlaceRail_N (TileIndex tile)
static void | PlaceRail_NE (TileIndex tile)
static void | PlaceRail_E (TileIndex tile)
static void | PlaceRail_NW (TileIndex tile)
static void | PlaceRail_AutoRail (TileIndex tile)
static void | PlaceExtraDepotRail (TileIndex tile, uint16 extra)
| Try to add an additional rail-track at the entrance of a depot.
void | CcRailDepot (const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
static void | PlaceRail_Depot (TileIndex tile)
static void | PlaceRail_Waypoint (TileIndex tile)
void | CcStation (const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
static void | PlaceRail_Station (TileIndex tile)
static void | GenericPlaceSignals (TileIndex tile)
| Build a new signal or edit/remove a present signal, use CmdBuildSingleSignal() or CmdRemoveSingleSignal() in rail_cmd.cpp.
static void | PlaceRail_Bridge (TileIndex tile)
void | CcBuildRailTunnel (const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
| Command callback for building a tunnel.
static void | PlaceRail_Tunnel (TileIndex tile)
static void | PlaceRail_ConvertRail (TileIndex tile)
static void | PlaceRail_AutoSignals (TileIndex tile)
static void | ToggleRailButton_Remove (Window *w)
| Toggles state of the Remove button of Build rail toolbar.
static bool | RailToolbar_CtrlChanged (Window *w)
| Updates the Remove button because of Ctrl state change.
static void | BuildRailClick_N (Window *w)
| The "rail N"-button click proc of the build-rail toolbar.
static void | BuildRailClick_NE (Window *w)
| The "rail NE"-button click proc of the build-rail toolbar.
static void | BuildRailClick_E (Window *w)
| The "rail E"-button click proc of the build-rail toolbar.
static void | BuildRailClick_NW (Window *w)
| The "rail NW"-button click proc of the build-rail toolbar.
static void | BuildRailClick_AutoRail (Window *w)
| The "auto-rail"-button click proc of the build-rail toolbar.
static void | BuildRailClick_Demolish (Window *w)
| The "demolish"-button click proc of the build-rail toolbar.
static void | BuildRailClick_Depot (Window *w)
| The "build depot"-button click proc of the build-rail toolbar.
static void | BuildRailClick_Waypoint (Window *w)
| The "build waypoint"-button click proc of the build-rail toolbar.
static void | BuildRailClick_Station (Window *w)
| The "build station"-button click proc of the build-rail toolbar.
static void | BuildRailClick_AutoSignals (Window *w)
| The "build signal"-button click proc of the build-rail toolbar.
static void | BuildRailClick_Bridge (Window *w)
| The "build bridge"-button click proc of the build-rail toolbar.
static void | BuildRailClick_Tunnel (Window *w)
| The "build tunnel"-button click proc of the build-rail toolbar.
static void | BuildRailClick_Remove (Window *w)
| The "remove"-button click proc of the build-rail toolbar.
static void | BuildRailClick_Convert (Window *w)
| The "convert-rail"-button click proc of the build-rail toolbar.
static void | DoRailroadTrack (int mode)
static void | HandleAutodirPlacement ()
static void | HandleAutoSignalPlacement ()
| Build new signals or remove signals or (if only one tile marked) edit a signal.
void | ShowBuildRailToolbar (RailType railtype, int button)
| Open the build rail toolbar window for a specific rail type.
void | InitializeRailGui ()
| Initialize rail building GUI settings.
void | ReinitGuiAfterToggleElrail (bool disable)
| Re-initialize rail-build toolbar after toggling support for electric trains.
static void | SetDefaultRailGui ()
| Set the initial (default) railtype to use.
bool | ResetSignalVariant (int32 p=0)
| Updates the current signal variant used in the signal GUI to the one adequate to current year.
void | InitializeRailGUI ()
| Resets the rail GUI - sets default railtype to build and resets the signal GUI.
## Variables
static RailType | _cur_railtype
| Rail type of the current build-rail toolbar.
static bool | _remove_button_clicked
| Flag whether 'remove' toggle-button is currently enabled.
static DiagDirection | _build_depot_direction
| Currently selected depot direction.
static byte | _waypoint_count = 1
| Number of waypoint types.
static byte | _cur_waypoint_type
| Currently selected waypoint type.
static bool | _convert_signal_button
| convert signal button in the signal GUI pressed
static SignalVariant | _cur_signal_variant
| set the signal variant (for signal GUI)
static SignalType | _cur_signal_type
| set the signal type (for signal GUI)
static const SignalType | _default_signal_type [] = {SIGTYPE_NORMAL, SIGTYPE_PBS, SIGTYPE_PBS_ONEWAY}
static RailStationGUISettings | _railstation
| Settings of the station builder GUI.
static const uint16 | _place_depot_extra [12]
| Additional pieces of track to add at the entrance of a depot.
static const RailBuildingGUIButtonData | _rail_build_button_data []
| GUI rail-building button data constants.
static const NWidgetPart | _nested_build_rail_widgets []
static const WindowDesc | _build_rail_desc (WDP_ALIGN_TOOLBAR, 0, 0, WC_BUILD_TOOLBAR, WC_NONE, WDF_CONSTRUCTION, _nested_build_rail_widgets, lengthof(_nested_build_rail_widgets))
static const NWidgetPart | _nested_station_builder_widgets []
static const NWidgetPart | _nested_newstation_builder_widgets []
static const WindowDesc | _station_builder_desc (WDP_AUTO, 0, 0, WC_BUILD_STATION, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_station_builder_widgets, lengthof(_nested_station_builder_widgets))
| High level window description of the default station-build window.
static const WindowDesc | _newstation_builder_desc (WDP_AUTO, 0, 0, WC_BUILD_STATION, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_newstation_builder_widgets, lengthof(_nested_newstation_builder_widgets))
| High level window description of the newGRF station-build window.
static const NWidgetPart | _nested_signal_builder_widgets []
| Nested widget definition of the build signal window.
static const WindowDesc | _signal_builder_desc (WDP_AUTO, 0, 0, WC_BUILD_SIGNAL, WC_BUILD_TOOLBAR, WDF_UNCLICK_BUTTONS|WDF_CONSTRUCTION, _nested_signal_builder_widgets, lengthof(_nested_signal_builder_widgets))
| Signal selection window description.
static const NWidgetPart | _nested_build_depot_widgets []
| Nested widget definition of the build rail depot window.
static const WindowDesc | _build_depot_desc (WDP_AUTO, 0, 0, WC_BUILD_DEPOT, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_build_depot_widgets, lengthof(_nested_build_depot_widgets))
static const NWidgetPart | _nested_build_waypoint_widgets []
| Nested widget definition for the build NewGRF rail waypoint window.
static const WindowDesc | _build_waypoint_desc (WDP_AUTO, 0, 0, WC_BUILD_DEPOT, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_build_waypoint_widgets, lengthof(_nested_build_waypoint_widgets))

## Detailed Description

File for dealing with rail construction user interface.

Definition in file rail_gui.cpp.

## Function Documentation

static void BuildRailClick_AutoRail | ( | Window * | w | ) | `[static]`

The "auto-rail"-button click proc of the build-rail toolbar.

Parameters:

  | w | Build-rail toolbar window

See also:
  BuildRailToolbWndProc()

Definition at line 384 of file rail_gui.cpp.

References _cur_railtype, RailtypeInfo::autorail, GetRailTypeInfo(), HandlePlacePushButton(), and HT_RAIL.

static void BuildRailClick_AutoSignals | ( | Window * | w | ) | `[static]`

The "build signal"-button click proc of the build-rail toolbar.

Start ShowSignalBuilder() and/or HandleAutoSignalPlacement().

Parameters:

  | w | Build-rail toolbar window

See also:
  BuildRailToolbWndProc()

Definition at line 442 of file rail_gui.cpp.

References _ctrl_pressed, _settings_client, ANIMCURSOR_BUILDSIGNALS, GUISettings::enable_signal_gui, ClientSettings::gui, HandlePlacePushButton(), HT_RECT, and ShowSignalBuilder().

static void BuildRailClick_Bridge | ( | Window * | w | ) | `[static]`

The "build bridge"-button click proc of the build-rail toolbar.

Parameters:

  | w | Build-rail toolbar window

See also:
  BuildRailToolbWndProc()

Definition at line 456 of file rail_gui.cpp.

References HandlePlacePushButton(), and HT_RECT.

static void BuildRailClick_Convert | ( | Window * | w | ) | `[static]`

The "convert-rail"-button click proc of the build-rail toolbar.

Switches to 'convert-rail' mode

Parameters:

  | w | Build-rail toolbar window

See also:
  BuildRailToolbWndProc()

Definition at line 511 of file rail_gui.cpp.

References _cur_railtype, RailtypeInfo::convert, GetRailTypeInfo(), HandlePlacePushButton(), and HT_RECT.

static void BuildRailClick_Demolish | ( | Window * | w | ) | `[static]`

The "demolish"-button click proc of the build-rail toolbar.

Parameters:

  | w | Build-rail toolbar window

See also:
  BuildRailToolbWndProc()

Definition at line 394 of file rail_gui.cpp.

References ANIMCURSOR_DEMOLISH, HandlePlacePushButton(), and HT_RECT.

static void BuildRailClick_Depot | ( | Window * | w | ) | `[static]`

The "build depot"-button click proc of the build-rail toolbar.

Parameters:

  | w | Build-rail toolbar window

See also:
  BuildRailToolbWndProc()

Definition at line 404 of file rail_gui.cpp.

References _cur_railtype, RailtypeInfo::depot, GetRailTypeInfo(), HandlePlacePushButton(), and HT_RECT.

static void BuildRailClick_E | ( | Window * | w | ) | `[static]`

The "rail E"-button click proc of the build-rail toolbar.

Parameters:

  | w | Build-rail toolbar window

See also:
  BuildRailToolbWndProc()

Definition at line 364 of file rail_gui.cpp.

References _cur_railtype, GetRailTypeInfo(), HandlePlacePushButton(), HT_DIR_HL, HT_LINE, and RailtypeInfo::rail_ew.

static void BuildRailClick_N | ( | Window * | w | ) | `[static]`

The "rail N"-button click proc of the build-rail toolbar.

Parameters:

  | w | Build-rail toolbar window

See also:
  BuildRailToolbWndProc()

Definition at line 344 of file rail_gui.cpp.

References _cur_railtype, GetRailTypeInfo(), HandlePlacePushButton(), HT_DIR_VL, HT_LINE, and RailtypeInfo::rail_ns.

static void BuildRailClick_NE | ( | Window * | w | ) | `[static]`

The "rail NE"-button click proc of the build-rail toolbar.

Parameters:

  | w | Build-rail toolbar window

See also:
  BuildRailToolbWndProc()

Definition at line 354 of file rail_gui.cpp.

References _cur_railtype, GetRailTypeInfo(), HandlePlacePushButton(), HT_DIR_X, HT_LINE, and RailtypeInfo::rail_swne.

static void BuildRailClick_NW | ( | Window * | w | ) | `[static]`

The "rail NW"-button click proc of the build-rail toolbar.

Parameters:

  | w | Build-rail toolbar window

See also:
  BuildRailToolbWndProc()

Definition at line 374 of file rail_gui.cpp.

References _cur_railtype, GetRailTypeInfo(), HandlePlacePushButton(), HT_DIR_Y, HT_LINE, and RailtypeInfo::rail_nwse.

static void BuildRailClick_Remove | ( | Window * | w | ) | `[static]`

The "remove"-button click proc of the build-rail toolbar.

Parameters:

  | w | Build-rail toolbar window

See also:
  BuildRailToolbWndProc()

Definition at line 476 of file rail_gui.cpp.

References _remove_button_clicked, _settings_client, _settings_game, ClientSettings::gui, Window::IsWidgetDisabled(), Window::IsWidgetLowered(), RailStationGUISettings::orientation, SetTileSelectSize(), GameSettings::station, GUISettings::station_dragdrop, GUISettings::station_numtracks, GUISettings::station_platlength, StationSettings::station_spread, Swap(), and ToggleRailButton_Remove().

static void BuildRailClick_Station | ( | Window * | w | ) | `[static]`

The "build station"-button click proc of the build-rail toolbar.

Parameters:

  | w | Build-rail toolbar window

See also:
  BuildRailToolbWndProc()

Definition at line 431 of file rail_gui.cpp.

References HandlePlacePushButton(), HT_RECT, and ShowStationBuilder().

static void BuildRailClick_Tunnel | ( | Window * | w | ) | `[static]`

The "build tunnel"-button click proc of the build-rail toolbar.

Parameters:

  | w | Build-rail toolbar window

See also:
  BuildRailToolbWndProc()

Definition at line 466 of file rail_gui.cpp.

References _cur_railtype, GetRailTypeInfo(), HandlePlacePushButton(), HT_SPECIAL, and RailtypeInfo::tunnel.

static void BuildRailClick_Waypoint | ( | Window * | w | ) | `[static]`

The "build waypoint"-button click proc of the build-rail toolbar.

If there are newGRF waypoints, also open a window to pick the waypoint type.

Parameters:

  | w | Build-rail toolbar window

See also:
  BuildRailToolbWndProc()

Definition at line 417 of file rail_gui.cpp.

References _waypoint_count, GetNumCustomStations(), HandlePlacePushButton(), HT_RECT, and STAT_CLASS_WAYP.

static void GenericPlaceSignals | ( | TileIndex | tile | ) | `[static]`

Build a new signal or edit/remove a present signal, use CmdBuildSingleSignal() or CmdRemoveSingleSignal() in rail_cmd.cpp.

Parameters:

  | tile | The tile where the signal will build or edit

Definition at line 209 of file rail_gui.cpp.

References _convert_signal_button, _ctrl_pressed, _cur_signal_type, _cur_signal_variant, _cur_year, _remove_button_clicked, _settings_client, CMD_BUILD_SIGNALS, CMD_MSG, CMD_REMOVE_SIGNALS, GUISettings::cycle_signal_types, DDSP_BUILD_BRIDGE, GUISettings::default_signal_type, DoCommandP(), FindFirstTrack(), FindWindowById(), GetTileTrackStatus(), ClientSettings::gui, SB(), GUISettings::semaphore_build_before, SIG_ELECTRIC, SIG_SEMAPHORE, SIGTYPE_NORMAL, SIGTYPE_PBS, TRACK_BIT_HORZ, TRACK_BIT_LEFT, TRACK_BIT_LOWER, TRACK_BIT_RIGHT, TRACK_BIT_UPPER, TRACK_BIT_VERT, TrackStatusToTrackBits(), TRANSPORT_RAIL, VPM_X_OR_Y, and VpStartPlaceSizing().

Referenced by HandleAutoSignalPlacement().

static void HandleAutoSignalPlacement | ( |  | ) | `[static]`

Build new signals or remove signals or (if only one tile marked) edit a signal.

If one tile marked abort and use GenericPlaceSignals() else use CmdBuildSingleSignal() or CmdRemoveSingleSignal() in rail_cmd.cpp to build many signals

Definition at line 545 of file rail_gui.cpp.

References _ctrl_pressed, _cur_signal_type, _cur_signal_variant, _cur_year, _remove_button_clicked, _settings_client, CMD_BUILD_SIGNAL_TRACK, CMD_MSG, CMD_REMOVE_SIGNAL_TRACK, GUISettings::default_signal_type, DoCommandP(), GUISettings::drag_signals_density, FindWindowById(), GB(), GenericPlaceSignals(), ClientSettings::gui, HT_RECT, SB(), GUISettings::semaphore_build_before, SIG_ELECTRIC, and SIG_SEMAPHORE.

Referenced by BuildRailToolbarWindow::OnPlaceMouseUp().

static void PlaceExtraDepotRail | ( | TileIndex | tile,
|  | uint16 | extra |
| ) |  |  | `[static]`

Try to add an additional rail-track at the entrance of a depot.

Parameters:

  | tile | Tile to use for adding the rail-track
  | extra | Track to add

See also:
  CcRailDepot()

Definition at line 115 of file rail_gui.cpp.

References _cur_railtype, CMD_BUILD_SINGLE_RAIL, DoCommandP(), GB(), GetRailTileType(), GetTrackBits(), and RAIL_TILE_NORMAL.

static bool RailToolbar_CtrlChanged | ( | Window * | w | ) | `[static]`

Updates the Remove button because of Ctrl state change.

Parameters:

  | w | window the button belongs to

Returns:
  true iff the remove buton was changed

Definition at line 323 of file rail_gui.cpp.

References Window::IsWidgetDisabled(), Window::IsWidgetLowered(), and ToggleRailButton_Remove().

Referenced by BuildRailToolbarWindow::OnClick(), BuildRailToolbarWindow::OnCTRLStateChange(), and BuildRailToolbarWindow::OnKeyPress().

void ReinitGuiAfterToggleElrail | ( | bool | disable | ) |

Re-initialize rail-build toolbar after toggling support for electric trains.

Parameters:

  | disable | Boolean whether electric trains are disabled (removed from the game)

Definition at line 1910 of file rail_gui.cpp.

References _cur_railtype, FindWindowById(), MarkWholeScreenDirty(), BuildRailToolbarWindow::ModifyRailType(), RAILTYPE_ELECTRIC, RAILTYPE_RAIL, and TRANSPORT_RAIL.

Referenced by SettingsDisableElrail().

bool ResetSignalVariant | ( | int32 | p = `0` | ) |

Updates the current signal variant used in the signal GUI to the one adequate to current year.

Parameters:

  | p | needed to be called when a setting changes

Returns:
  success, needed for settings

Definition at line 1972 of file rail_gui.cpp.

References _cur_signal_type, _cur_signal_variant, _cur_year, _settings_client, FindWindowById(), ClientSettings::gui, Window::RaiseWidget(), GUISettings::semaphore_build_before, Window::SetDirty(), SIG_ELECTRIC, and SIG_SEMAPHORE.

Referenced by ClickChangeDateCheat(), InitializeRailGUI(), and OnNewYear().

void ShowBuildRailToolbar | ( | RailType | railtype,
|  | int | button |
| ) |  |  |

Open the build rail toolbar window for a specific rail type.

The window may be opened in the 'normal' way by clicking at the rail icon in the main toolbar, or by means of selecting one of the functions of the toolbar. In the latter case, the corresponding widget is also selected.

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

Parameters:

  | railtype | Rail type to open the window for
  | button | Widget clicked (`-1` means no button clicked)

Definition at line 889 of file rail_gui.cpp.

References _cur_railtype, _remove_button_clicked, RailBuildingGUIButtonData::click_proc, DeleteWindowByClass(), FindWindowById(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), TRANSPORT_RAIL, and ValParamRailtype().

Referenced by MainToolbarWindow::OnKeyPress().

static void ToggleRailButton_Remove | ( | Window * | w | ) | `[static]`

Toggles state of the Remove button of Build rail toolbar.

Parameters:

  | w | window the button belongs to

Definition at line 310 of file rail_gui.cpp.

References _remove_button_clicked, DeleteWindowById(), Window::IsWidgetLowered(), Window::SetWidgetDirty(), and Window::ToggleWidgetLoweredState().

Referenced by BuildRailClick_Remove(), and RailToolbar_CtrlChanged().

## Variable Documentation

const NWidgetPart _nested_build_depot_widgets[]`[static]`

Initial value:

     {
      NWidget(NWID_HORIZONTAL),
        NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN),
        NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
      EndContainer(),
      NWidget(WWT_PANEL, COLOUR_DARK_GREEN),
        NWidget(NWID_SPACER), SetMinimalSize(0, 3),
        NWidget(NWID_HORIZONTAL_LTR),
          NWidget(NWID_SPACER), SetMinimalSize(3, 0), SetFill(1, 0),
          NWidget(NWID_VERTICAL),
            NWidget(WWT_PANEL, COLOUR_GREY, BRDW_DEPOT_NW), SetMinimalSize(66, 50), SetDataTip(0x0, STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP),
            EndContainer(),
            NWidget(NWID_SPACER), SetMinimalSize(0, 2),
            NWidget(WWT_PANEL, COLOUR_GREY, BRDW_DEPOT_SW), SetMinimalSize(66, 50), SetDataTip(0x0, STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP),
            EndContainer(),
          EndContainer(),
          NWidget(NWID_SPACER), SetMinimalSize(2, 0),
          NWidget(NWID_VERTICAL),
            NWidget(WWT_PANEL, COLOUR_GREY, BRDW_DEPOT_NE), SetMinimalSize(66, 50), SetDataTip(0x0, STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP),
            EndContainer(),
            NWidget(NWID_SPACER), SetMinimalSize(0, 2),
            NWidget(WWT_PANEL, COLOUR_GREY, BRDW_DEPOT_SE), SetMinimalSize(66, 50), SetDataTip(0x0, STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP),
            EndContainer(),
          EndContainer(),
          NWidget(NWID_SPACER), SetMinimalSize(3, 0), SetFill(1, 0),
        EndContainer(),
        NWidget(NWID_SPACER), SetMinimalSize(0, 3),
      EndContainer(),
    }

Nested widget definition of the build rail depot window.

Definition at line 1756 of file rail_gui.cpp.

const NWidgetPart _nested_build_waypoint_widgets[]`[static]`

Initial value:

     {
      NWidget(NWID_HORIZONTAL),
        NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN),
        NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_WAYPOINT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
      EndContainer(),
      NWidget(WWT_PANEL, COLOUR_DARK_GREEN),
        NWidget(NWID_SPACER), SetMinimalSize(0, 3),
        NWidget(NWID_HORIZONTAL), SetPIP(3, 2, 3),
          NWidget(WWT_PANEL, COLOUR_DARK_GREEN, BRWW_WAYPOINT_1), SetMinimalSize(66, 60), SetDataTip(0x0, STR_WAYPOINT_GRAPHICS_TOOLTIP), EndContainer(),
          NWidget(WWT_PANEL, COLOUR_DARK_GREEN, BRWW_WAYPOINT_2), SetMinimalSize(66, 60), SetDataTip(0x0, STR_WAYPOINT_GRAPHICS_TOOLTIP), EndContainer(),
          NWidget(WWT_PANEL, COLOUR_DARK_GREEN, BRWW_WAYPOINT_3), SetMinimalSize(66, 60), SetDataTip(0x0, STR_WAYPOINT_GRAPHICS_TOOLTIP), EndContainer(),
          NWidget(WWT_PANEL, COLOUR_DARK_GREEN, BRWW_WAYPOINT_4), SetMinimalSize(66, 60), SetDataTip(0x0, STR_WAYPOINT_GRAPHICS_TOOLTIP), EndContainer(),
          NWidget(WWT_PANEL, COLOUR_DARK_GREEN, BRWW_WAYPOINT_5), SetMinimalSize(66, 60), SetDataTip(0x0, STR_WAYPOINT_GRAPHICS_TOOLTIP), EndContainer(),
        EndContainer(),
        NWidget(NWID_SPACER), SetMinimalSize(0, 3),
        NWidget(WWT_HSCROLLBAR, COLOUR_DARK_GREEN, BRWW_SCROLL),
      EndContainer(),
    }

Nested widget definition for the build NewGRF rail waypoint window.

Definition at line 1867 of file rail_gui.cpp.

const uint16 _place_depot_extra[12]`[static]`

Initial value:

     {
      0x0604, 0x2102, 0x1202, 0x0505,
      0x2400, 0x2801, 0x1800, 0x1401,
      0x2203, 0x0904, 0x0A05, 0x1103,
    }

Additional pieces of track to add at the entrance of a depot.

Definition at line 124 of file rail_gui.cpp.

const RailBuildingGUIButtonData _rail_build_button_data[]`[static]`

Initial value:

     {
      {'1', BuildRailClick_N          },
      {'2', BuildRailClick_NE         },
      {'3', BuildRailClick_E          },
      {'4', BuildRailClick_NW         },
      {'5', BuildRailClick_AutoRail   },
      {'6', BuildRailClick_Demolish   },
      {'7', BuildRailClick_Depot      },
      {'8', BuildRailClick_Waypoint   },
      {'9', BuildRailClick_Station    },
      {'S', BuildRailClick_AutoSignals},
      {'B', BuildRailClick_Bridge     },
      {'T', BuildRailClick_Tunnel     },
      {'R', BuildRailClick_Remove     },
      {'C', BuildRailClick_Convert    }
    }

GUI rail-building button data constants.

Offsets match widget order, starting at RTW_BUILD_NS

Definition at line 597 of file rail_gui.cpp.