OpenTTD Source: src/station_gui.cpp File Reference

OpenTTD Source 14.0-beta1

Data Structures | Typedefs | Enumerations | Functions | Variables
station_gui.cpp File Reference
`#include "stdafx.h"`
`#include "debug.h"`
`#include "gui.h"`
`#include "textbuf_gui.h"`
`#include "company_func.h"`
`#include "command_func.h"`
`#include "vehicle_gui.h"`
`#include "cargotype.h"`
`#include "station_gui.h"`
`#include "strings_func.h"`
`#include "string_func.h"`
`#include "window_func.h"`
`#include "viewport_func.h"`
`#include "widgets/dropdown_func.h"`
`#include "station_base.h"`
`#include "waypoint_base.h"`
`#include "tilehighlight_func.h"`
`#include "company_base.h"`
`#include "sortlist_type.h"`
`#include "core/geometry_func.hpp"`
`#include "vehiclelist.h"`
`#include "town.h"`
`#include "linkgraph/linkgraph.h"`
`#include "zoom_func.h"`
`#include "station_cmd.h"`
`#include "widgets/station_widget.h"`
`#include "table/strings.h"`
`#include "safeguards.h"`

Go to the source code of this file.

## Data Structures
class | CompanyStationsWindow
| The list of stations per company. More...
struct | CompanyStationsWindow::FilterState
class | CargoSorter
class | CargoDataEntry
| A cargo data entry representing one possible row in the station view window's top part. More...
struct | StationViewWindow
| The StationView window. More...
struct | StationViewWindow::RowDisplay
| A row being displayed in the cargo view (as opposed to being "hidden" behind a plus sign). More...
struct | TileAndStation
| Struct containing TileIndex and StationID. More...
struct | SelectStationWindow< T >
| Window for selecting stations/waypoints to (distant) join to. More...

## Typedefs
typedef GUIList< const Station *, const CargoTypes & > | GUIStationList
typedef std::set< CargoDataEntry *, CargoSorter > | CargoDataSet

## Enumerations
enum | SortOrder { SO_DESCENDING, SO_ASCENDING }
enum | CargoSortType : byte { CargoSortType::AsGrouping, CargoSortType::Count, CargoSortType::StationString, CargoSortType::StationID, CargoSortType::CargoID }

## Functions
int | DrawStationCoverageAreaText (int left, int right, int top, StationCoverageType sct, int rad, bool supplies)
| Calculates and draws the accepted or supplied cargo around the selected tile(s) More...
template<typename T >
void | FindStationsAroundSelection ()
| Find stations adjacent to the current tile highlight area, so that existing coverage area can be drawn.
void | CheckRedrawStationCoverage (const Window *w)
| Check whether we need to redraw the station coverage text. More...
void | CheckRedrawWaypointCoverage (const Window *)
static void | StationsWndShowStationRating (int left, int right, int y, CargoID type, uint amount, byte rating)
| Draw small boxes of cargo amount and ratings data at the given coordinates. More...
static std::unique_ptr< NWidgetBase > | CargoWidgets ()
| Make a horizontal row of cargo buttons, starting at widget WID_STL_CARGOSTART. More...
void | ShowCompanyStations (CompanyID company)
| Opens window with list of company's stations. More...
static void | DrawCargoIcons (CargoID i, uint waiting, int left, int right, int y)
| Draws icons of waiting cargo in the StationView window. More...
void | ShowStationViewWindow (StationID station)
| Opens StationViewWindow for given station. More...
template<class T >
static bool | AddNearbyStation (TileIndex tile, void *user_data)
| Add station on this tile to _stations_nearby_list if it's fully within the station spread. More...
template<class T >
static const T * | FindStationsNearby (TileArea ta, bool distant_join)
| Circulate around the to-be-built station to find stations we could join. More...
template<class T >
static bool | StationJoinerNeeded (TileArea ta, const StationPickerCmdProc &proc)
| Check whether we need to show the station selection window. More...
template<class T >
void | ShowSelectBaseStationIfNeeded (TileArea ta, StationPickerCmdProc &&proc)
| Show the station selection window when needed. More...
void | ShowSelectStationIfNeeded (TileArea ta, StationPickerCmdProc proc)
| Show the station selection window when needed. More...
void | ShowSelectWaypointIfNeeded (TileArea ta, StationPickerCmdProc proc)
| Show the waypoint selection window when needed. More...

## Variables
static constexpr NWidgetPart | _nested_company_stations_widgets []
static WindowDesc | _company_stations_desc (__FILE__, __LINE__, WDP_AUTO, "list_stations", 358, 162, WC_STATION_LIST, WC_NONE, 0, std::begin(_nested_company_stations_widgets), std::end(_nested_company_stations_widgets))
static constexpr NWidgetPart | _nested_station_view_widgets []
static WindowDesc | _station_view_desc (__FILE__, __LINE__, WDP_AUTO, "view_station", 249, 117, WC_STATION_VIEW, WC_NONE, 0, std::begin(_nested_station_view_widgets), std::end(_nested_station_view_widgets))
static std::vector< TileAndStation > | _deleted_stations_nearby
static std::vector< StationID > | _stations_nearby_list
static constexpr NWidgetPart | _nested_select_station_widgets []
static WindowDesc | _select_station_desc (__FILE__, __LINE__, WDP_AUTO, "build_station_join", 200, 180, WC_SELECT_STATION, WC_NONE, WDF_CONSTRUCTION, std::begin(_nested_select_station_widgets), std::end(_nested_select_station_widgets))

## Detailed Description

The GUI for stations.

Definition in file station_gui.cpp.

## Enumeration Type Documentation

## ◆ CargoSortType

enum CargoSortType : byte
| strong

Enumerator
AsGrouping | by the same principle the entries are being grouped
Count | by amount of cargo
StationString | by station name
StationID | by station id
CargoID | by cargo id

Definition at line 857 of file station_gui.cpp.

## Function Documentation

## ◆ AddNearbyStation()

template<class T >

static bool AddNearbyStation | ( | TileIndex | tile,
|  | void * | user_data
| ) |  |
| static

Add station on this tile to _stations_nearby_list if it's fully within the station spread.

Parameters

  tile | Tile just being checked
  user_data | Pointer to TileArea context

Template Parameters

  T | the type of station to look for

Definition at line 2172 of file station_gui.cpp.

## ◆ CargoWidgets()

static std::unique_ptr<NWidgetBase> CargoWidgets | ( |  | ) |
| static

Make a horizontal row of cargo buttons, starting at widget WID_STL_CARGOSTART.

Returns
  Horizontal row.

Definition at line 719 of file station_gui.cpp.

References _sorted_standard_cargo_specs, and WWT_PANEL.

## ◆ CheckRedrawStationCoverage()

void CheckRedrawStationCoverage | ( | const Window * | w | ) |

Check whether we need to redraw the station coverage text.

If it is needed actually make the window for redrawing.

Parameters

  w | the window to check.

Definition at line 126 of file station_gui.cpp.

References _ctrl_pressed.

Referenced by BuildDocksStationWindow::OnRealtimeTick(), BuildAirportWindow::OnRealtimeTick(), BuildRailStationWindow::OnRealtimeTick(), and BuildRoadStationWindow::OnRealtimeTick().

## ◆ DrawCargoIcons()

static void DrawCargoIcons | ( | CargoID | i,
|  | uint | waiting,
|  | int | left,
|  | int | right,
|  | int | y
| ) |  |
| static

Draws icons of waiting cargo in the StationView window.

Parameters

  i | type of cargo
  waiting | number of waiting units
  left | left most coordinate to draw on
  right | right most coordinate to draw on
  y | y coordinate

Definition at line 835 of file station_gui.cpp.

## ◆ DrawStationCoverageAreaText()

int DrawStationCoverageAreaText | ( | int | left,
|  | int | right,
|  | int | top,
|  | StationCoverageType | sct,
|  | int | rad,
|  | bool | supplies
| ) |  |

Calculates and draws the accepted or supplied cargo around the selected tile(s)

Parameters

  left | x position where the string is to be drawn
  right | the right most position to draw on
  top | y position where the string is to be drawn
  sct | which type of cargo is to be displayed (passengers/non-passengers)
  rad | radius around selected tile(s) to be searched
  supplies | if supplied cargoes should be drawn, else accepted cargoes

Returns
  Returns the y value below the string that was drawn

Definition at line 52 of file station_gui.cpp.

References TileVirtXY().

## ◆ FindStationsNearby()

template<class T >

static const T* FindStationsNearby | ( | TileArea | ta,
|  | bool | distant_join
| ) |  |
| static

Circulate around the to-be-built station to find stations we could join.

Make sure that only stations are returned where joining wouldn't exceed station spread and are our own station.

Parameters

  ta | Base tile area of the to-be-built station
  distant_join | Search for adjacent stations (false) or stations fully within station spread

Template Parameters

  T | the type of station to look for

Definition at line 2214 of file station_gui.cpp.

## ◆ ShowCompanyStations()

void ShowCompanyStations | ( | CompanyID | company | ) |

Opens window with list of company's stations.

Parameters

  company | whose stations' list show

Definition at line 782 of file station_gui.cpp.

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

Referenced by MenuClickStations().

## ◆ ShowSelectBaseStationIfNeeded()

template<class T >

void ShowSelectBaseStationIfNeeded | ( | TileArea | ta,
|  | StationPickerCmdProc && | proc
| ) |  |

Show the station selection window when needed.

If not, build the station.

Parameters

  cmd | Command to build the station.
  ta | Area to build the station in

Template Parameters

  the | class to find stations for

Definition at line 2445 of file station_gui.cpp.

References _settings_client, ClientSettings::gui, GUISettings::persistent_buildingtools, and ResetObjectToPlace().

## ◆ ShowSelectStationIfNeeded()

void ShowSelectStationIfNeeded | ( | TileArea | ta,
|  | StationPickerCmdProc | proc
| ) |  |

Show the station selection window when needed.

If not, build the station.

Parameters

  ta | Area to build the station in
  proc | Function called to execute the build command.

Definition at line 2460 of file station_gui.cpp.

## ◆ ShowSelectWaypointIfNeeded()

void ShowSelectWaypointIfNeeded | ( | TileArea | ta,
|  | StationPickerCmdProc | proc
| ) |  |

Show the waypoint selection window when needed.

If not, build the waypoint.

Parameters

  ta | Area to build the waypoint in
  proc | Function called to execute the build command.

Definition at line 2470 of file station_gui.cpp.

## ◆ ShowStationViewWindow()

void ShowStationViewWindow | ( | StationID | station | ) |

Opens StationViewWindow for given station.

Parameters

  station | station which window should be opened

Definition at line 2150 of file station_gui.cpp.

## ◆ StationJoinerNeeded()

template<class T >

static bool StationJoinerNeeded | ( | TileArea | ta,
|  | const StationPickerCmdProc & | proc
| ) |  |
| static

Check whether we need to show the station selection window.

Parameters

  cmd | Command to build the station.
  ta | Tile area of the to-be-built station

Template Parameters

  T | the type of station

Returns
  whether we need to show the station selection window.

Definition at line 2411 of file station_gui.cpp.

References _ctrl_pressed, _settings_game, Window::Close(), StationSettings::distant_join_stations, FindWindowById(), GameSettings::station, UpdateTileSelection(), and WC_SELECT_STATION.

## ◆ StationsWndShowStationRating()

static void StationsWndShowStationRating | ( | int | left,
|  | int | right,
|  | int | y,
|  | CargoID | type,
|  | uint | amount,
|  | byte | rating
| ) |  |
| static

Draw small boxes of cargo amount and ratings data at the given coordinates.

If amount exceeds 576 units, it is shown 'full', same goes for the rating: at above 90% orso (224) it is also 'full'

Parameters

  left | left most coordinate to draw the box at
  right | right most coordinate to draw the box at
  y | coordinate to draw the box at
  type | Cargo type
  amount | Cargo amount
  rating | ratings data for that particular cargo

< number of units to show station as 'full'

< rating needed so it is shown as 'full'

Definition at line 175 of file station_gui.cpp.

## Variable Documentation

## ◆ _nested_select_station_widgets

constexpr NWidgetPart _nested_select_station_widgets[]
| staticconstexpr

Initial value:
= {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN),
NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, WID_JS_CAPTION), SetDataTip(STR_JOIN_STATION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_DEFSIZEBOX, COLOUR_DARK_GREEN),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_JS_PANEL), SetResize(1, 0), SetScrollbar(WID_JS_SCROLLBAR), EndContainer(),
NWidget(NWID_VERTICAL),
NWidget(NWID_VSCROLLBAR, COLOUR_DARK_GREEN, WID_JS_SCROLLBAR),
NWidget(WWT_RESIZEBOX, COLOUR_DARK_GREEN),
EndContainer(),
EndContainer(),
}

Definition at line 2255 of file station_gui.cpp.

WWT_CAPTION
@ WWT_CAPTION
Window caption (window title between closebox and stickybox)
Definition: widget_type.h:63
WWT_DEFSIZEBOX
@ WWT_DEFSIZEBOX
Default window size box (at top-right of a window, between WWT_SHADEBOX and WWT_STICKYBOX)
Definition: widget_type.h:67
NWID_HORIZONTAL
@ NWID_HORIZONTAL
Horizontal container.
Definition: widget_type.h:77
EndContainer
constexpr NWidgetPart EndContainer()
Widget part function for denoting the end of a container (horizontal, vertical, WWT_FRAME,...
Definition: widget_type.h:1151
SetResize
constexpr NWidgetPart SetResize(int16_t dx, int16_t dy)
Widget part function for setting the resize step.
Definition: widget_type.h:1086
SetScrollbar
constexpr NWidgetPart SetScrollbar(WidgetID index)
Attach a scrollbar to a widget.
Definition: widget_type.h:1244
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
NWID_VERTICAL
@ NWID_VERTICAL
Vertical container.
Definition: widget_type.h:79
WWT_CLOSEBOX
@ WWT_CLOSEBOX
Close box (at top-left of a window)
Definition: widget_type.h:71
WWT_RESIZEBOX
@ WWT_RESIZEBOX
Resize box (normally at bottom-right of a window)
Definition: widget_type.h:70
NWID_VSCROLLBAR
@ NWID_VSCROLLBAR
Vertical scrollbar.
Definition: widget_type.h:86
WWT_PANEL
@ WWT_PANEL
Simple depressed panel.
Definition: widget_type.h:52
SetDataTip
constexpr NWidgetPart SetDataTip(uint32_t data, StringID tip)
Widget part function for setting the data and tooltip.
Definition: widget_type.h:1162