| OpenTTD
    | 
GUI for building roads. 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 "road_cmd.h"#include "station_func.h"#include "window_func.h"#include "vehicle_func.h"#include "sound_func.h"#include "company_func.h"#include "tunnelbridge.h"#include "tunnelbridge_map.h"#include "tilehighlight_func.h"#include "company_base.h"#include "hotkeys.h"#include "road_gui.h"#include "zoom_func.h"#include "widgets/road_widget.h"#include "table/strings.h"#include "safeguards.h"Go to the source code of this file.
| Data Structures | |
| struct | RoadTypeInfo | 
| Structure holding information per roadtype for several functions.  More... | |
| struct | BuildRoadToolbarWindow | 
| Road toolbar window handler.  More... | |
| struct | BuildRoadDepotWindow | 
| struct | BuildRoadStationWindow | 
| Typedefs | |
| typedef void | OnButtonClick (Window *w) | 
| Enumerations | |
| enum | RoadFlags { RF_NONE = 0x00, RF_START_HALFROAD_Y = 0x01, RF_END_HALFROAD_Y = 0x02, RF_DIR_Y = 0x04, RF_DIR_X = RF_NONE, RF_START_HALFROAD_X = 0x08, RF_END_HALFROAD_X = 0x10 } | 
| Define the values of the RoadFlags.  More... | |
| Functions | |
| static void | ShowRVStationPicker (Window *parent, RoadStopType rs) | 
| static void | ShowRoadDepotPicker (Window *parent) | 
| void | CcPlaySound_SPLAT_OTHER (const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) | 
| static void | PlaceRoad_Bridge (TileIndex tile, Window *w) | 
| Callback to start placing a bridge. | |
| void | CcBuildRoadTunnel (const CommandCost &result, TileIndex start_tile, uint32 p1, uint32 p2) | 
| Callback executed after a build road tunnel command has been called. | |
| void | ConnectRoadToStructure (TileIndex tile, DiagDirection direction) | 
| If required, connects a new structure to an existing road or tram by building the missing roadbit. | |
| void | CcRoadDepot (const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) | 
| void | CcRoadStop (const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) | 
| Command callback for building road stops. | |
| static void | PlaceRoadStop (TileIndex start_tile, TileIndex end_tile, uint32 p2, uint32 cmd) | 
| Place a new road stop. | |
| static void | PlaceRoad_BusStation (TileIndex tile) | 
| Callback for placing a bus station. | |
| static void | PlaceRoad_TruckStation (TileIndex tile) | 
| Callback for placing a truck station. | |
| static void | ToggleRoadButton_Remove (Window *w) | 
| Toggles state of the Remove button of Build road toolbar. | |
| static bool | RoadToolbar_CtrlChanged (Window *w) | 
| Updates the Remove button because of Ctrl state change. | |
| static EventState | RoadToolbarGlobalHotkeys (int hotkey) | 
| Handler for global hotkeys of the BuildRoadToolbarWindow. | |
| Window * | ShowBuildRoadToolbar (RoadType roadtype) | 
| Open the build road toolbar window. | |
| Window * | ShowBuildRoadScenToolbar () | 
| Show the road building toolbar in the scenario editor. | |
| void | InitializeRoadGui () | 
| Variables | |
| static bool | _remove_button_clicked | 
| static bool | _one_way_button_clicked | 
| static RoadFlags | _place_road_flag | 
| static RoadType | _cur_roadtype | 
| static DiagDirection | _road_depot_orientation | 
| static DiagDirection | _road_station_picker_orientation | 
| static const RoadTypeInfo | _road_type_infos [] | 
| What errors/cursors must be shown for several types of roads. | |
| static Hotkey | roadtoolbar_hotkeys [] | 
| static const NWidgetPart | _nested_build_road_widgets [] | 
| static WindowDesc | _build_road_desc (WDP_ALIGN_TOOLBAR,"toolbar_road", 0, 0, WC_BUILD_TOOLBAR, WC_NONE, WDF_CONSTRUCTION, _nested_build_road_widgets, lengthof(_nested_build_road_widgets),&BuildRoadToolbarWindow::hotkeys) | 
| static const NWidgetPart | _nested_build_tramway_widgets [] | 
| static WindowDesc | _build_tramway_desc (WDP_ALIGN_TOOLBAR,"toolbar_tramway", 0, 0, WC_BUILD_TOOLBAR, WC_NONE, WDF_CONSTRUCTION, _nested_build_tramway_widgets, lengthof(_nested_build_tramway_widgets),&BuildRoadToolbarWindow::hotkeys) | 
| static const NWidgetPart | _nested_build_road_scen_widgets [] | 
| static WindowDesc | _build_road_scen_desc (WDP_AUTO,"toolbar_road_scen", 0, 0, WC_SCEN_BUILD_TOOLBAR, WC_NONE, WDF_CONSTRUCTION, _nested_build_road_scen_widgets, lengthof(_nested_build_road_scen_widgets),&BuildRoadToolbarWindow::hotkeys) | 
| static const NWidgetPart | _nested_build_road_depot_widgets [] | 
| static WindowDesc | _build_road_depot_desc (WDP_AUTO, NULL, 0, 0, WC_BUILD_DEPOT, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_build_road_depot_widgets, lengthof(_nested_build_road_depot_widgets)) | 
| static const NWidgetPart | _nested_rv_station_picker_widgets [] | 
| Widget definition of the build road station window. | |
| static WindowDesc | _rv_station_picker_desc (WDP_AUTO, NULL, 0, 0, WC_BUS_STATION, WC_BUILD_TOOLBAR, WDF_CONSTRUCTION, _nested_rv_station_picker_widgets, lengthof(_nested_rv_station_picker_widgets)) | 
GUI for building roads.
Definition in file road_gui.cpp.
| enum RoadFlags | 
Define the values of the RoadFlags.
Definition at line 49 of file road_gui.cpp.
| void CcBuildRoadTunnel | ( | const CommandCost & | result, | 
| TileIndex | start_tile, | ||
| uint32 | p1, | ||
| uint32 | p2 | ||
| ) | 
Callback executed after a build road tunnel command has been called.
| result | Whether the build succeeded. | 
| start_tile | Starting tile of the tunnel. | 
| p1 | bit 0-3 railtype or roadtypes bit 8-9 transport type | 
| p2 | unused | 
Definition at line 96 of file road_gui.cpp.
References _build_tunnel_endtile, _settings_client, SoundSettings::confirm, ConnectRoadToStructure(), GetOtherTunnelBridgeEnd(), GetTunnelBridgeDirection(), ClientSettings::gui, GUISettings::persistent_buildingtools, ResetObjectToPlace(), ReverseDiagDir(), SetRedErrorSquare(), SND_1F_SPLAT_OTHER, ClientSettings::sound, and CommandCost::Succeeded().
Referenced by BuildRoadToolbarWindow::OnPlaceObject().
| void CcRoadStop | ( | const CommandCost & | result, | 
| TileIndex | tile, | ||
| uint32 | p1, | ||
| uint32 | p2 | ||
| ) | 
Command callback for building road stops.
| result | Result of the build road stop command. | 
| tile | Start tile. | 
| p1 | bit 0..7: Width of the road stop. bit 8..15: Length of the road stop. | 
| p2 | bit 0: 0 For bus stops, 1 for truck stops. bit 1: 0 For normal stops, 1 for drive-through. bit 2..3: The roadtypes. bit 5: Allow stations directly adjacent to other stations. bit 6..7: Entrance direction (DiagDirection). bit 16..31: Station ID to join (NEW_STATION if build new one). | 
Definition at line 199 of file road_gui.cpp.
References _settings_client, SoundSettings::confirm, ConnectRoadToStructure(), CommandCost::Failed(), GB(), ClientSettings::gui, HasBit(), GUISettings::persistent_buildingtools, ResetObjectToPlace(), ReverseDiagDir(), SND_1F_SPLAT_OTHER, ClientSettings::sound, and TILE_AREA_LOOP.
Referenced by PlaceRoadStop().
| void ConnectRoadToStructure | ( | TileIndex | tile, | 
| DiagDirection | direction | ||
| ) | 
If required, connects a new structure to an existing road or tram by building the missing roadbit.
| tile | Tile containing the structure to connect. | 
| direction | Direction to check. | 
Definition at line 164 of file road_gui.cpp.
References CMD_BUILD_ROAD, DiagDirToRoadBits(), DoCommandP(), GetRoadBits(), IsNormalRoadTile(), ReverseDiagDir(), ROAD_NONE, and TileOffsByDiagDir().
Referenced by CcBuildBridge(), CcBuildRoadTunnel(), and CcRoadStop().
Callback to start placing a bridge.
| tile | Start tile of the bridge. | 
Definition at line 76 of file road_gui.cpp.
References DDSP_BUILD_BRIDGE, GetOtherTunnelBridgeEnd(), IsBridgeTile(), Window::OnPlaceMouseUp(), VPM_X_OR_Y, and VpStartPlaceSizing().
Referenced by BuildRoadToolbarWindow::OnPlaceObject().
| 
 | static | 
Callback for placing a bus station.
| tile | Position to place the station. | 
Definition at line 244 of file road_gui.cpp.
References _remove_button_clicked, _settings_game, AXIS_X, DDSP_BUILD_BUSSTOP, DDSP_REMOVE_BUSSTOP, DIAGDIR_END, DiagDirToAxis(), GameSettings::station, StationSettings::station_spread, VPM_X_AND_Y, VPM_X_AND_Y_LIMITED, VPM_X_LIMITED, VPM_Y_LIMITED, and VpStartPlaceSizing().
Referenced by BuildRoadToolbarWindow::OnPlaceObject().
| 
 | static | 
Callback for placing a truck station.
| tile | Position to place the station. | 
Definition at line 262 of file road_gui.cpp.
References _remove_button_clicked, _settings_game, AXIS_X, DDSP_BUILD_TRUCKSTOP, DDSP_REMOVE_TRUCKSTOP, DIAGDIR_END, DiagDirToAxis(), GameSettings::station, StationSettings::station_spread, VPM_X_AND_Y, VPM_X_AND_Y_LIMITED, VPM_X_LIMITED, VPM_Y_LIMITED, and VpStartPlaceSizing().
Referenced by BuildRoadToolbarWindow::OnPlaceObject().
| 
 | static | 
Place a new road stop.
| start_tile | First tile of the area. | 
| end_tile | Last tile of the area. | 
| p2 | bit 0: 0 For bus stops, 1 for truck stops. bit 2..3: The roadtypes. bit 5: Allow stations directly adjacent to other stations. | 
| cmd | Command to use. | 
Definition at line 224 of file road_gui.cpp.
References CcRoadStop(), DIAGDIR_END, OrthogonalTileArea::h, SB(), SetBit(), ShowSelectStationIfNeeded(), OrthogonalTileArea::tile, and OrthogonalTileArea::w.
Referenced by BuildRoadToolbarWindow::OnPlaceMouseUp().
| 
 | static | 
Updates the Remove button because of Ctrl state change.
| w | window the button belongs to | 
Definition at line 295 of file road_gui.cpp.
References Window::IsWidgetDisabled(), Window::IsWidgetLowered(), ToggleRoadButton_Remove(), WID_ROT_AUTOROAD, WID_ROT_REMOVE, and WID_ROT_ROAD_X.
Referenced by BuildRoadToolbarWindow::OnClick(), and BuildRoadToolbarWindow::OnCTRLStateChange().
| 
 | static | 
Handler for global hotkeys of the BuildRoadToolbarWindow.
| hotkey | Hotkey | 
Definition at line 678 of file road_gui.cpp.
References ES_NOT_HANDLED, Window::OnHotkey(), ShowBuildRoadScenToolbar(), and ShowBuildRoadToolbar().
| 
 | read | 
Show the road building toolbar in the scenario editor.
NULL if the toolbar was already open. Definition at line 853 of file road_gui.cpp.
References ROADTYPE_ROAD, and TRANSPORT_ROAD.
Referenced by RoadToolbarGlobalHotkeys().
Open the build road toolbar window.
If the terraform toolbar is linked to the toolbar, that window is also opened.
Definition at line 805 of file road_gui.cpp.
References _local_company, DeleteWindowByClass(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), ROADTYPE_ROAD, TRANSPORT_ROAD, and WC_BUILD_TOOLBAR.
Referenced by MenuClickBuildRoad(), MainToolbarWindow::OnHotkey(), and RoadToolbarGlobalHotkeys().
| 
 | static | 
Toggles state of the Remove button of Build road toolbar.
| w | window the button belongs to | 
Definition at line 282 of file road_gui.cpp.
References _remove_button_clicked, Window::IsWidgetLowered(), Window::SetWidgetDirty(), Window::ToggleWidgetLoweredState(), and WID_ROT_REMOVE.
Referenced by BuildRoadToolbarWindow::OnClick(), and RoadToolbar_CtrlChanged().
| 
 | static | 
Definition at line 908 of file road_gui.cpp.
| 
 | static | 
Definition at line 814 of file road_gui.cpp.
| 
 | static | 
What errors/cursors must be shown for several types of roads.
Definition at line 130 of file road_gui.cpp.
| 
 | static | 
Definition at line 700 of file road_gui.cpp.
 1.8.1.2
 1.8.1.2