The GUI for stations. More...
#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 "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 "widgets/station_widget.h"#include "table/strings.h"#include <set>#include <vector>Go to the source code of this file.
Data Structures | |
| class | CompanyStationsWindow |
| The list of stations per company. More... | |
| 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 * > | GUIStationList |
|
typedef std::set < CargoDataEntry *, CargoSorter > | CargoDataSet |
Enumerations | |
| enum | SortOrder { SO_DESCENDING, SO_ASCENDING } |
| enum | CargoSortType { ST_AS_GROUPING, ST_COUNT, ST_STATION_STRING, ST_STATION_ID, ST_CARGO_ID } |
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). | |
| void | CheckRedrawStationCoverage (const Window *w) |
| Check whether we need to redraw the station coverage text. | |
| 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. | |
| static NWidgetBase * | CargoWidgets (int *biggest_index) |
| Make a horizontal row of cargo buttons, starting at widget WID_STL_CARGOSTART. | |
| void | ShowCompanyStations (CompanyID company) |
| Opens window with list of company's stations. | |
| static void | DrawCargoIcons (CargoID i, uint waiting, int left, int right, int y) |
| Draws icons of waiting cargo in the StationView window. | |
| void | ShowStationViewWindow (StationID station) |
| Opens StationViewWindow for given station. | |
| 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. | |
| 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. | |
| template<class T > | |
| static bool | StationJoinerNeeded (const CommandContainer &cmd, TileArea ta) |
| Check whether we need to show the station selection window. | |
| template<class T > | |
| void | ShowSelectBaseStationIfNeeded (const CommandContainer &cmd, TileArea ta) |
| Show the station selection window when needed. | |
| void | ShowSelectStationIfNeeded (const CommandContainer &cmd, TileArea ta) |
| Show the station selection window when needed. | |
| void | ShowSelectWaypointIfNeeded (const CommandContainer &cmd, TileArea ta) |
| Show the waypoint selection window when needed. | |
Variables | |
| static const NWidgetPart | _nested_company_stations_widgets [] |
| static WindowDesc | _company_stations_desc (WDP_AUTO,"list_stations", 358, 162, WC_STATION_LIST, WC_NONE, 0, _nested_company_stations_widgets, lengthof(_nested_company_stations_widgets)) |
| static const NWidgetPart | _nested_station_view_widgets [] |
| static WindowDesc | _station_view_desc (WDP_AUTO,"view_station", 249, 117, WC_STATION_VIEW, WC_NONE, 0, _nested_station_view_widgets, lengthof(_nested_station_view_widgets)) |
|
static SmallVector < TileAndStation, 8 > | _deleted_stations_nearby |
| static SmallVector< StationID, 8 > | _stations_nearby_list |
| static const NWidgetPart | _nested_select_station_widgets [] |
| static WindowDesc | _select_station_desc (WDP_AUTO,"build_station_join", 200, 180, WC_SELECT_STATION, WC_NONE, WDF_CONSTRUCTION, _nested_select_station_widgets, lengthof(_nested_select_station_widgets)) |
The GUI for stations.
Definition in file station_gui.cpp.
| enum CargoSortType |
| ST_AS_GROUPING |
by the same principle the entries are being grouped |
| ST_COUNT |
by amount of cargo |
| ST_STATION_STRING |
by station name |
| ST_STATION_ID |
by station id |
| ST_CARGO_ID |
by cargo id |
Definition at line 822 of file station_gui.cpp.
| 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.
| T | the type of station to look for |
Definition at line 2127 of file station_gui.cpp.
References _local_company, SmallVector< T, S >::Append(), SmallVector< T, S >::Contains(), SmallVector< T, S >::Erase(), SmallVector< T, S >::Get(), GetStationIndex(), TileArea::h, IsTileType(), SmallVector< T, S >::Length(), MP_STATION, TileArea::tile, TileAndStation::tile, and TileArea::w.
| static NWidgetBase* CargoWidgets | ( | int * | biggest_index | ) | [static] |
Make a horizontal row of cargo buttons, starting at widget WID_STL_CARGOSTART.
| biggest_index | Pointer to store biggest used widget number of the buttons. |
Definition at line 681 of file station_gui.cpp.
References _sorted_standard_cargo_specs_size, NWidgetContainer::Add(), NWidgetCore::SetDataTip(), NWidgetResizeBase::SetFill(), NWidgetResizeBase::SetMinimalSize(), NWidgetResizeBase::SetResize(), WID_STL_CARGOSTART, and WWT_PANEL.
| 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.
| w | the window to check. |
Definition at line 84 of file station_gui.cpp.
References TileHighlightData::dirty, and Window::SetDirty().
Referenced by BuildRoadStationWindow::OnTick(), BuildRailStationWindow::OnTick(), BuildDocksStationWindow::OnTick(), and BuildAirportWindow::OnTick().
| static void DrawCargoIcons | ( | CargoID | i, | |
| uint | waiting, | |||
| int | left, | |||
| int | right, | |||
| int | y | |||
| ) | [static] |
Draws icons of waiting cargo in the StationView window.
| 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 | |
| width | the width of the view |
Definition at line 801 of file station_gui.cpp.
References _current_text_dir, DrawSprite(), CargoSpec::Get(), CargoSpec::GetCargoIcon(), min(), and TD_RTL.
Referenced by StationViewWindow::DrawEntries().
| 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).
| 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 |
Definition at line 52 of file station_gui.cpp.
References CC_PASSENGERS, DrawStringMultiLine(), TileHighlightData::drawstyle, GetAcceptanceAroundTiles(), GetProductionAroundTiles(), HT_RECT, IsCargoInClass(), MapSize(), TileHighlightData::pos, SCT_ALL, SCT_NON_PASSENGERS_ONLY, SCT_PASSENGERS_ONLY, SetBit(), SetDParam(), TileHighlightData::size, TILE_SIZE, and TileVirtXY().
Referenced by BuildRoadStationWindow::OnPaint(), BuildRailStationWindow::OnPaint(), BuildDocksStationWindow::OnPaint(), and BuildAirportWindow::OnPaint().
| 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.
| ta | Base tile area of the to-be-built station | |
| distant_join | Search for adjacent stations (false) or stations fully within station spread |
| T | the type of station to look for |
Definition at line 2169 of file station_gui.cpp.
References _local_company, _settings_game, SmallVector< T, S >::Append(), CircularTileSearch(), SmallVector< T, S >::Clear(), DIR_N, DistanceMax(), GetStationIndex(), TileArea::h, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, IsInsideBS(), BaseStation::IsInUse(), IsTileType(), MapSize(), max(), min(), MP_STATION, BaseStation::owner, TileAndStation::station, GameSettings::station, StationSettings::station_spread, TileAndStation::tile, TileArea::tile, TILE_ADD, TILE_ADDXY, TILE_AREA_LOOP, TileOffsByDir(), TileX(), TileY(), TileArea::w, and BaseStation::xy.
| void ShowCompanyStations | ( | CompanyID | company | ) |
Opens window with list of company's stations.
| company | whose stations' list show |
Definition at line 744 of file station_gui.cpp.
Referenced by MenuClickStations(), and MainToolbarWindow::OnHotkey().
| void ShowSelectBaseStationIfNeeded | ( | const CommandContainer & | cmd, | |
| TileArea | ta | |||
| ) |
Show the station selection window when needed.
If not, build the station.
| cmd | Command to build the station. | |
| ta | Area to build the station in |
| the | class to find stations for |
Definition at line 2388 of file station_gui.cpp.
References _settings_client, DoCommandP(), ClientSettings::gui, and GUISettings::persistent_buildingtools.
| void ShowSelectStationIfNeeded | ( | const CommandContainer & | cmd, | |
| TileArea | ta | |||
| ) |
Show the station selection window when needed.
If not, build the station.
| cmd | Command to build the station. | |
| ta | Area to build the station in |
Definition at line 2403 of file station_gui.cpp.
Referenced by BuildDocksToolbarWindow::OnPlaceObject(), PlaceAirport(), PlaceRail_Station(), and PlaceRoadStop().
| void ShowSelectWaypointIfNeeded | ( | const CommandContainer & | cmd, | |
| TileArea | ta | |||
| ) |
Show the waypoint selection window when needed.
If not, build the waypoint.
| cmd | Command to build the waypoint. | |
| ta | Area to build the waypoint in |
Definition at line 2413 of file station_gui.cpp.
Referenced by BuildRailToolbarWindow::OnPlaceMouseUp().
| void ShowStationViewWindow | ( | StationID | station | ) |
Opens StationViewWindow for given station.
| station | station which window should be opened |
Definition at line 2105 of file station_gui.cpp.
| static bool StationJoinerNeeded | ( | const CommandContainer & | cmd, | |
| TileArea | ta | |||
| ) | [static] |
Check whether we need to show the station selection window.
| T | the type of station |
Definition at line 2354 of file station_gui.cpp.
References _ctrl_pressed, _settings_game, StationSettings::adjacent_stations, CommandContainer::cmd, CommandFlagsToDCFlags(), StationSettings::distant_join_stations, DoCommand(), CommandCost::Failed(), FindWindowById(), GetCommandFlags(), SmallVector< T, S >::Length(), GameSettings::station, UpdateTileSelection(), and WC_SELECT_STATION.
| 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'
| 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 107 of file station_gui.cpp.
References CargoSpec::abbrev, DrawString(), FS_SMALL, CargoSpec::Get(), GetCharacterHeight(), GetContrastColour(), GfxFillRect(), CargoSpec::IsValid(), minu(), PC_GREEN, and PC_RED.
Referenced by CompanyStationsWindow::DrawWidget().
const NWidgetPart _nested_select_station_widgets[] [static] |
{
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 2212 of file station_gui.cpp.
1.7.1