70 static void ShowBuildTrainDepotPicker(
Window *parent);
 
   71 static void ShowBuildWaypointPicker(
Window *parent);
 
   94 static void GenericPlaceRail(
TileIndex tile, 
int cmd)
 
  100       CcPlaySound_SPLAT_RAIL);
 
  134   if (result.
Failed()) 
return;
 
  145     PlaceExtraDepotRail(tile, _place_depot_extra_dir[dir + 4], _place_depot_extra_track[dir + 4]);
 
  146     PlaceExtraDepotRail(tile, _place_depot_extra_dir[dir + 8], _place_depot_extra_track[dir + 8]);
 
  175   if (result.
Failed()) 
return;
 
  190     VpSetPlaceSizingLimit(-1);
 
  254         CcPlaySound_SPLAT_RAIL);
 
  337         VpSetPlaceSizingLimit(-1);
 
  353 static void DoRailroadTrack(
int mode)
 
  359       CcPlaySound_SPLAT_RAIL);
 
  362 static void HandleAutodirPlacement()
 
  371   DoRailroadTrack(trackstat);
 
  414       CcPlaySound_SPLAT_RAIL);
 
  445     if (!gui_scope) 
return;
 
  480   void UpdateRemoveWidgetStatus(
int clicked_widget)
 
  482     switch (clicked_widget) {
 
  515         SetDParam(0, STR_TOOLBAR_RAILTYPE_VELOCITY);
 
  562           ShowBuildTrainDepotPicker(
this);
 
  571           ShowBuildWaypointPicker(
this);
 
  610       default: NOT_REACHED();
 
  612     this->UpdateRemoveWidgetStatus(widget);
 
  679       default: NOT_REACHED();
 
  694       switch (select_proc) {
 
  695         default: NOT_REACHED();
 
  702           HandleAutodirPlacement();
 
  724               HandleStationPlacement(start_tile, end_tile);
 
  744   virtual void OnPlaceObjectAbort()
 
  746     this->RaiseButtons();
 
  782   extern RailType _last_built_railtype;
 
  790 static Hotkey railtoolbar_hotkeys[] = {
 
  809 static const NWidgetPart _nested_build_rail_widgets[] = {
 
  854   _nested_build_rail_widgets, 
lengthof(_nested_build_rail_widgets),
 
  855   &BuildRailToolbarWindow::hotkeys
 
  884   uint numtracks = ta.w;
 
  885   uint platlength = ta.h;
 
  968     if (!newstation || _railstation.
station_class >= (
int)StationClass::GetClassCount()) {
 
  980       for (uint i = 0; i < StationClass::GetClassCount(); i++) {
 
 1019     for (uint bits = 0; bits < 7; bits++) {
 
 1021       if (statspec == NULL) {
 
 1054         for (uint i = 0; i < StationClass::GetClassCount(); i++) {
 
 1058         size->width = 
max(size->width, d.width + padding.width);
 
 1074         StringID str = this->GetWidget<NWidgetCore>(widget)->widget_data;
 
 1079             const StationSpec *statspec = stclass->GetSpec(j);
 
 1080             SetDParam(0, (statspec != NULL && statspec->
name != 0) ? statspec->
name : STR_STATION_CLASS_DFLT);
 
 1084         size->width = 
max(size->width, d.width + padding.width);
 
 1110     switch (
GB(widget, 0, 16)) {
 
 1113         if (
FillDrawPixelInfo(&tmp_dpi, r.left, r.top, r.right - r.left + 1, r.bottom - r.top + 1)) {
 
 1115           _cur_dpi = &tmp_dpi;
 
 1127         if (
FillDrawPixelInfo(&tmp_dpi, r.left, r.top, r.right - r.left + 1, r.bottom - r.top + 1)) {
 
 1129           _cur_dpi = &tmp_dpi;
 
 1142         for (uint i = 0; i < StationClass::GetClassCount(); i++) {
 
 1156         byte type = 
GB(widget, 16, 16);
 
 1165         if (
FillDrawPixelInfo(&tmp_dpi, r.left, r.top, r.right - r.left + 1, r.bottom - r.top + 1)) {
 
 1167           _cur_dpi = &tmp_dpi;
 
 1191       SetDParam(0, (statspec != NULL && statspec->
name != 0) ? statspec->
name : STR_STATION_CLASS_DFLT);
 
 1197     switch (
GB(widget, 0, 16)) {
 
 1226           for (uint i = 0; i < 7; i++) {
 
 1261           for (uint i = 0; i < 7; i++) {
 
 1286           for (uint i = 0; i < 7; i++) {
 
 1295           for (uint i = 0; i < 7; i++) {
 
 1324         if (y >= (
int)StationClass::GetClassCount()) 
return;
 
 1325         for (uint i = 0; i < StationClass::GetClassCount(); i++) {
 
 1351         int y = 
GB(widget, 16, 16);
 
 1377 static const NWidgetPart _nested_station_builder_widgets[] = {
 
 1395         NWidget(
WWT_LABEL, COLOUR_DARK_GREEN), 
SetMinimalSize(144, 11), 
SetDataTip(STR_STATION_BUILD_ORIENTATION, STR_NULL), 
SetPadding(1, 2, 0, 2),
 
 1398           NWidget(
WWT_PANEL, COLOUR_GREY, 
WID_BRAS_PLATFORM_DIR_X), 
SetMinimalSize(66, 60), 
SetFill(0, 0), 
SetDataTip(0x0, STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP), 
EndContainer(),
 
 1400           NWidget(
WWT_PANEL, COLOUR_GREY, 
WID_BRAS_PLATFORM_DIR_Y), 
SetMinimalSize(66, 60), 
SetFill(0, 0), 
SetDataTip(0x0, STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP), 
EndContainer(),
 
 1403         NWidget(
WWT_LABEL, COLOUR_DARK_GREEN, 
WID_BRAS_SHOW_NEWST_TYPE), 
SetMinimalSize(144, 11), 
SetDataTip(STR_ORANGE_STRING, STR_NULL), 
SetPadding(1, 2, 4, 2),
 
 1404         NWidget(
WWT_LABEL, COLOUR_DARK_GREEN), 
SetMinimalSize(144, 11), 
SetDataTip(STR_STATION_BUILD_NUMBER_OF_TRACKS, STR_NULL), 
SetPadding(0, 2, 0, 2),
 
 1416         NWidget(
WWT_LABEL, COLOUR_DARK_GREEN), 
SetMinimalSize(144, 11), 
SetDataTip(STR_STATION_BUILD_PLATFORM_LENGTH, STR_NULL), 
SetPadding(2, 2, 0, 2),
 
 1434         NWidget(
WWT_LABEL, COLOUR_DARK_GREEN), 
SetMinimalSize(144, 11), 
SetDataTip(STR_STATION_BUILD_COVERAGE_AREA_TITLE, STR_NULL), 
SetPadding(3, 2, 0, 2),
 
 1438                         SetDataTip(STR_STATION_BUILD_COVERAGE_OFF, STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP),
 
 1440                         SetDataTip(STR_STATION_BUILD_COVERAGE_ON, STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP),
 
 1448             NWidget(
NWID_MATRIX, COLOUR_DARK_GREEN, 
WID_BRAS_MATRIX), 
SetScrollbar(
WID_BRAS_MATRIX_SCROLL), 
SetPIP(0, 2, 0), 
SetPadding(2, 0, 0, 0),
 
 1472   WDP_AUTO, 
"build_station_rail", 350, 0,
 
 1475   _nested_station_builder_widgets, 
lengthof(_nested_station_builder_widgets)
 
 1501     const NWidgetBase *widget = this->GetWidget<NWidgetBase>(widget_index);
 
 1502     int x = widget->
pos_x - offset.x +
 
 1503         (widget->
current_x - sprite_size.width + offset.x) / 2;  
 
 1533         for (uint lowered = 0; lowered < 2; lowered++) {
 
 1635     if (!gui_scope) 
return;
 
 1687   _nested_signal_builder_widgets, 
lengthof(_nested_signal_builder_widgets)
 
 1772   _nested_build_depot_widgets, 
lengthof(_nested_build_depot_widgets)
 
 1775 static void ShowBuildTrainDepotPicker(
Window *parent)
 
 1799         size->width  += resize->width  * 2;
 
 1800         size->height += resize->height * 2;
 
 1815     switch (
GB(widget, 0, 16)) {
 
 1817         byte type = 
GB(widget, 16, 16);
 
 1830     switch (
GB(widget, 0, 16)) {
 
 1832         byte type = 
GB(widget, 16, 16);
 
 1871   _nested_build_waypoint_widgets, 
lengthof(_nested_build_waypoint_widgets)
 
 1874 static void ShowBuildWaypointPicker(
Window *parent)
 
 1893   extern RailType _last_built_railtype;
 
 1907   extern RailType _last_built_railtype;
 
 1912     memset(count, 0, 
sizeof(count));
 
 1922       if (count[r] >= count[rt]) rt = r;
 
 2014     if (!
HasBit(used_railtypes, rt)) 
continue;