OpenTTD Source 20250523-master-g321f7e8683
station_func.h
Go to the documentation of this file.
1/*
2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
6 */
7
10#ifndef STATION_FUNC_H
11#define STATION_FUNC_H
12
13#include "sprite.h"
14#include "rail_type.h"
15#include "road_type.h"
16#include "vehicle_type.h"
17#include "economy_func.h"
18#include "rail.h"
19#include "road.h"
21#include "industry_type.h"
22
23void ModifyStationRatingAround(TileIndex tile, Owner owner, int amount, uint radius);
24
27void ClearAllStationCachedNames();
28
29CargoArray GetProductionAroundTiles(TileIndex tile, int w, int h, int rad);
30CargoArray GetAcceptanceAroundTiles(TileIndex tile, int w, int h, int rad, CargoTypes *always_accepted = nullptr);
31
32void UpdateStationAcceptance(Station *st, bool show_msg);
33CargoTypes GetAcceptanceMask(const Station *st);
34CargoTypes GetEmptyMask(const Station *st);
35
36void SetRailStationTileFlags(TileIndex tile, const StationSpec *statspec);
38void StationPickerDrawSprite(int x, int y, StationType st, RailType railtype, RoadType roadtype, int image);
39
40bool HasStationInUse(StationID station, bool include_company, CompanyID company);
41
42void DeleteOilRig(TileIndex t);
43void UpdateStationDockingTiles(Station *st);
44void RemoveDockingTile(TileIndex t);
46
48
49bool SplitGroundSpriteForOverlay(const TileInfo *ti, SpriteID *ground, RailTrackOffset *overlay_offset);
50
51void IncreaseStats(Station *st, const Vehicle *v, StationID next_station_id, uint32_t time);
52void IncreaseStats(Station *st, CargoType cargo, StationID next_station_id, uint capacity, uint usage, uint32_t time, EdgeUpdateModes modes);
53void RerouteCargo(Station *st, CargoType cargo, StationID avoid, StationID avoid2);
54
60inline Money StationMaintenanceCost(uint32_t num)
61{
62 return (_price[PR_INFRASTRUCTURE_STATION] * num * (1 + IntSqrt(num))) >> 7; // 7 bits scaling.
63}
64
66
67#endif /* STATION_FUNC_H */
uint8_t CargoType
Cargo slots to indicate a cargo type within a game.
Definition cargo_type.h:23
Enum-as-bit-set wrapper.
uint32_t IntSqrt(uint32_t num)
Compute the integer square root.
Definition math_func.cpp:42
Functions related to the economy.
uint32_t SpriteID
The number of a sprite, without mapping bits and colourtables.
Definition gfx_type.h:17
Types related to the industry.
Declaration of link graph types used for cargo distribution.
Rail specific functions.
RailTrackOffset
Offsets for sprites within an overlay/underlay set.
Definition rail.h:61
The different types of rail.
RailType
Enumeration for all possible railtypes.
Definition rail_type.h:25
Road specific functions.
Enums and other types related to roads.
RoadType
The different roadtypes we support.
Definition road_type.h:23
Base for drawing complex sprites.
CargoArray GetAcceptanceAroundTiles(TileIndex tile, int w, int h, int rad, CargoTypes *always_accepted=nullptr)
Get the acceptance of cargoes around the tile in 1/8.
CargoTypes GetEmptyMask(const Station *st)
Get a mask of the cargo types that are empty at the station.
void ClearDockingTilesCheckingNeighbours(TileIndex tile)
Clear docking tile status from tiles around a removed dock, if the tile has no neighbours which would...
void IncreaseStats(Station *st, const Vehicle *v, StationID next_station_id, uint32_t time)
Increase capacity for all link stats associated with vehicles in the given consist.
bool HasStationInUse(StationID station, bool include_company, CompanyID company)
Tests whether the company's vehicles have this station in orders.
Money AirportMaintenanceCost(Owner owner)
Calculates the maintenance cost of all airports of a company.
Definition station.cpp:713
const DrawTileSprites * GetStationTileLayout(StationType st, uint8_t gfx)
Get station tile layout for a station type and its station gfx.
Money StationMaintenanceCost(uint32_t num)
Calculates the maintenance cost of a number of station tiles.
void RerouteCargo(Station *st, CargoType cargo, StationID avoid, StationID avoid2)
Reroute cargo of type c at station st or in any vehicles unloading there.
void ShowStationViewWindow(StationID station)
Opens StationViewWindow for given station.
void UpdateAllStationVirtCoords()
Update the virtual coords needed to draw the station sign for all stations.
CargoTypes GetAcceptanceMask(const Station *st)
Get a mask of the cargo types that the station accepts.
void UpdateAirportsNoise()
Recalculate the noise generated by the airports of each town.
void UpdateStationAcceptance(Station *st, bool show_msg)
Update the acceptance for a station.
void SetRailStationTileFlags(TileIndex tile, const StationSpec *statspec)
Set rail station tile flags for the given tile.
CargoArray GetProductionAroundTiles(TileIndex tile, int w, int h, int rad)
Get the cargo types being produced around the tile (in a rectangle).
bool SplitGroundSpriteForOverlay(const TileInfo *ti, SpriteID *ground, RailTrackOffset *overlay_offset)
Check whether a sprite is a track sprite, which can be replaced by a non-track ground sprite and a ra...
StationType
Station types.
Class for storing amounts of cargo.
Definition cargo_type.h:113
Ground palette sprite of a tile, together with its sprite layout.
Definition sprite.h:43
Station specification.
Station data structure.
Tile information, used while rendering the tile.
Definition tile_cmd.h:29
Vehicle data structure.
Types related to vehicles.