OpenTTD Source 20241224-master-gee860a5c8e
|
Functions related to roads. More...
#include "core/bitmath_func.hpp"
#include "road.h"
#include "economy_func.h"
#include "transparency.h"
Go to the source code of this file.
Functions | |
bool | IsValidRoadBits (RoadBits r) |
Whether the given roadtype is valid. | |
RoadBits | ComplementRoadBits (RoadBits r) |
Calculate the complement of a RoadBits value. | |
RoadBits | MirrorRoadBits (RoadBits r) |
Calculate the mirrored RoadBits. | |
RoadBits | RotateRoadBits (RoadBits r, DiagDirDiff rot) |
Calculate rotated RoadBits. | |
bool | IsStraightRoad (RoadBits r) |
Check if we've got a straight road. | |
RoadBits | DiagDirToRoadBits (DiagDirection d) |
Create the road-part which belongs to the given DiagDirection. | |
RoadBits | AxisToRoadBits (Axis a) |
Create the road-part which belongs to the given Axis. | |
Money | RoadMaintenanceCost (RoadType roadtype, uint32_t num, uint32_t total_num) |
Calculates the maintenance cost of a number of road bits. | |
bool | HasRoadCatenary (RoadType roadtype) |
Test if a road type has catenary. | |
bool | HasRoadCatenaryDrawn (RoadType roadtype) |
Test if we should draw road catenary. | |
bool | HasRoadTypeAvail (CompanyID company, RoadType roadtype) |
Finds out, whether given company has a given RoadType available for construction. | |
bool | ValParamRoadType (RoadType roadtype) |
Validate functions for rail building. | |
RoadTypes | GetCompanyRoadTypes (CompanyID company, bool introduces=true) |
Get the road types the given company can build. | |
RoadTypes | GetRoadTypes (bool introduces) |
Get list of road types, regardless of company availability. | |
RoadTypes | AddDateIntroducedRoadTypes (RoadTypes current, TimerGameCalendar::Date date) |
Add the road types that are to be introduced at the given date. | |
void | UpdateLevelCrossing (TileIndex tile, bool sound=true, bool force_bar=false) |
Update a level crossing to barred or open (crossing may include multiple adjacent tiles). | |
void | MarkDirtyAdjacentLevelCrossingTiles (TileIndex tile, Axis road_axis) |
Find adjacent level crossing tiles in this multi-track crossing and mark them dirty. | |
void | UpdateAdjacentLevelCrossingTilesOnLevelCrossingRemoval (TileIndex tile, Axis road_axis) |
Update adjacent level crossing tiles in this multi-track crossing, due to removal of a level crossing tile. | |
void | UpdateCompanyRoadInfrastructure (RoadType rt, Owner o, int count) |
Update road infrastructure counts for a company. | |
void | DrawRoadOverlays (const TileInfo *ti, PaletteID pal, const RoadTypeInfo *road_rti, const RoadTypeInfo *tram_rit, uint road_offset, uint tram_offset, bool draw_underlay=true) |
Draw road underlay and overlay sprites. | |
void | DrawRoadGroundSprites (const TileInfo *ti, RoadBits road, RoadBits tram, const RoadTypeInfo *road_rti, const RoadTypeInfo *tram_rti, Roadside roadside, bool snow_or_desert) |
Draw road ground sprites. | |
Functions related to roads.
Definition in file road_func.h.
Add the road types that are to be introduced at the given date.
rt | Roadtype |
current | The currently available roadtypes. |
date | The date for the introduction comparisons. |
Definition at line 166 of file road.cpp.
References AddDateIntroducedRoadTypes(), GetRoadTypeInfo(), RoadTypeInfo::introduces_roadtypes, RoadTypeInfo::introduction_date, RoadTypeInfo::introduction_required_roadtypes, IsInsideMM(), RoadTypeInfo::label, TimerGameConst< struct Calendar >::MAX_DATE, ROADTYPE_BEGIN, and ROADTYPE_END.
Referenced by AddDateIntroducedRoadTypes(), GetCompanyRoadTypes(), GetRoadTypes(), and NewVehicleAvailable().
Create the road-part which belongs to the given Axis.
This function returns a RoadBits value which belongs to the given Axis.
a | The Axis |
Definition at line 111 of file road_func.h.
References AXIS_X, IsValidAxis(), ROAD_X, and ROAD_Y.
Referenced by CmdBuildLongRoad(), CmdBuildRoad(), CmdRemoveLongRoad(), GetAnyRoadBits(), RemoveGenericRoadStop(), RemoveRoad(), and RoadFindPathToDest().
Calculate the complement of a RoadBits value.
Simply flips all bits in the RoadBits value to get the complement of the RoadBits.
r | The given RoadBits value |
Definition at line 37 of file road_func.h.
References IsValidRoadBits(), and ROAD_ALL.
Referenced by CmdBuildRoad(), and RemoveRoad().
|
inline |
Create the road-part which belongs to the given DiagDirection.
This function returns a RoadBits value which belongs to the given DiagDirection.
d | The DiagDirection |
Definition at line 96 of file road_func.h.
References IsValidDiagDirection(), and ROAD_NW.
Referenced by CanConnectToRoad(), CanFollowRoad(), CanRoadContinueIntoNextTile(), CleanUpRoadBits(), CmdBuildLongRoad(), CmdBuildRoad(), ConnectRoadToStructure(), DrawRoadCatenary(), DrawRoadDepotSprite(), DrawRoadTypeCatenary(), DrawTile_Road(), GetAnyRoadBits(), GetTownRoadGridElement(), GrowTownAtRoad(), GrowTownInTile(), GrowTownWithBridge(), GrowTownWithTunnel(), IsNeighborRoadTile(), and RoadFindPathToDest().
void DrawRoadGroundSprites | ( | const TileInfo * | ti, |
RoadBits | road, | ||
RoadBits | tram, | ||
const RoadTypeInfo * | road_rti, | ||
const RoadTypeInfo * | tram_rti, | ||
Roadside | roadside, | ||
bool | snow_or_desert | ||
) |
Draw road ground sprites.
ti | TileInfo |
road | Road bits |
tram | Tram bits |
road_rti | Road road type information |
tram_rti | Tram road type information |
roadside | Roadside type |
snow_or_desert | Whether to draw snow/desert ground sprites |
Definition at line 1605 of file road_cmd.cpp.
References DrawGroundSprite(), DrawRoadOverlays(), GetRoadGroundSprite(), GetRoadSpriteOffset(), ROAD_NONE, and TileInfo::tileh.
Referenced by DrawRoadBits().
void DrawRoadOverlays | ( | const TileInfo * | ti, |
PaletteID | pal, | ||
const RoadTypeInfo * | road_rti, | ||
const RoadTypeInfo * | tram_rti, | ||
uint | road_offset, | ||
uint | tram_offset, | ||
bool | draw_underlay | ||
) |
Draw road underlay and overlay sprites.
ti | TileInfo |
road_rti | Road road type information |
tram_rti | Tram road type information |
road_offset | Road sprite offset (based on road bits) |
tram_offset | Tram sprite offset (based on road bits) |
draw_underlay | Whether to draw underlays |
Definition at line 1515 of file road_cmd.cpp.
References DrawGroundSprite(), GetCustomRoadSprite(), ROTSG_GROUND, ROTSG_OVERLAY, and TileInfo::tile.
Referenced by DrawRoadGroundSprites(), DrawTile_Road(), and DrawTile_TunnelBridge().
Get the road types the given company can build.
company | the company to get the road types for. |
introduces | If true, include road types introduced by other road types |
Definition at line 199 of file road.cpp.
References _settings_game, AddDateIntroducedRoadTypes(), EngineInfo::climates, TimerGameCalendar::date, TimerGameConst< struct Calendar >::DAYS_IN_YEAR, GameSettings::game_creation, GetRoadTypeInfo(), HasBit(), RoadTypeInfo::introduces_roadtypes, Engine::IterateType(), GameCreationSettings::landscape, RoadVehicleInfo::roadtype, ROADTYPE_END, ROADTYPES_NONE, SetBit(), and VEH_ROAD.
Referenced by AfterLoadGame(), DisableEngineForCompany(), DoStartupNewCompany(), EnableEngineForCompany(), and StartupEngines().
RoadTypes GetRoadTypes | ( | bool | introduces | ) |
Get list of road types, regardless of company availability.
introduces | If true, include road types introduced by other road types |
Definition at line 227 of file road.cpp.
References _settings_game, AddDateIntroducedRoadTypes(), EngineInfo::climates, GameSettings::game_creation, GetRoadTypeInfo(), HasBit(), RoadTypeInfo::introduces_roadtypes, Engine::IterateType(), GameCreationSettings::landscape, TimerGameConst< struct Calendar >::MAX_DATE, RoadVehicleInfo::roadtype, ROADTYPE_END, ROADTYPES_NONE, SetBit(), and VEH_ROAD.
Referenced by ScenarioEditorToolbarWindow::OnPaint(), and BuildRoadToolbarWindow::RoadTramToolbarGlobalHotkeys().
|
inline |
Test if a road type has catenary.
roadtype | Road type to test |
Definition at line 135 of file road_func.h.
References GetRoadTypeInfo(), HasBit(), ROADTYPE_END, and ROTF_CATENARY.
Referenced by DrawRoadTypeCatenary(), and HasRoadCatenaryDrawn().
|
inline |
Test if we should draw road catenary.
roadtype | Road type to test |
Definition at line 145 of file road_func.h.
References HasRoadCatenary(), IsInvisibilitySet(), and TO_CATENARY.
Referenced by DrawBridgeRoadBits(), DrawRoadCatenary(), and DrawTile_TunnelBridge().
Finds out, whether given company has a given RoadType available for construction.
company | ID of company |
roadtypet | RoadType to test |
Definition at line 111 of file road.cpp.
References _generating_world, Company::avail_roadtypes, TimerGameCalendar::date, RoadTypeInfo::flags, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), GetRoadTypeInfo(), HasBit(), RoadTypeInfo::introduction_date, IsInsideMM(), RoadTypeInfo::label, TimerGameConst< struct Calendar >::MAX_DATE, OWNER_DEITY, OWNER_TOWN, ROTFB_HIDDEN, and ROTFB_TOWN_BUILD.
Referenced by ValParamRoadType().
|
inline |
Check if we've got a straight road.
r | The given RoadBits |
Definition at line 81 of file road_func.h.
References IsValidRoadBits(), ROAD_X, and ROAD_Y.
Referenced by CheckRoadSlope(), CmdBuildRoad(), and RemoveRoad().
|
inline |
Whether the given roadtype is valid.
r | the roadtype to check for validness |
Definition at line 23 of file road_func.h.
References ROAD_END.
Referenced by CmdBuildRoad(), ComplementRoadBits(), IsStraightRoad(), MirrorRoadBits(), and RotateRoadBits().
Find adjacent level crossing tiles in this multi-track crossing and mark them dirty.
tile | The tile which causes the update. |
road_axis | The road axis. |
Definition at line 1805 of file train_cmd.cpp.
References AxisToDiagDir(), GetCrossingRoadAxis(), IsLevelCrossingTile(), MarkTileDirtyByTile(), ReverseDiagDir(), Map::Size(), and TileAddByDiagDir().
Referenced by CmdBuildRoad(), and CmdBuildSingleRail().
Calculate the mirrored RoadBits.
Simply move the bits to their new position.
r | The given RoadBits value |
Definition at line 51 of file road_func.h.
References GB(), and IsValidRoadBits().
Referenced by CheckRoadSlope(), CleanUpRoadBits(), CmdBuildRoad(), and RemoveRoad().
Calculates the maintenance cost of a number of road bits.
roadtype | Road type to get the cost for. |
num | Number of road bits. |
total_num | Total number of road bits of all road/tram-types. |
Definition at line 125 of file road_func.h.
References GetRoadTypeInfo(), IntSqrt(), and ROADTYPE_END.
Referenced by CompaniesGenStatistics(), CompanyInfrastructureWindow::DrawWidget(), CompanyInfrastructureWindow::GetTotalMaintenanceCost(), and CompanyInfrastructureWindow::UpdateWidgetSize().
|
inline |
Calculate rotated RoadBits.
Move the Roadbits clockwise until they are in their final position.
r | The given RoadBits value |
rot | The given Rotation angle |
Definition at line 66 of file road_func.h.
References GB(), and IsValidRoadBits().
Update adjacent level crossing tiles in this multi-track crossing, due to removal of a level crossing tile.
tile | The crossing tile which has been or is about to be removed, and which caused the update. |
road_axis | The road axis. |
Definition at line 1822 of file train_cmd.cpp.
References AxisToDiagDir(), CheckLevelCrossing(), GetCrossingRoadAxis(), IsCrossingBarred(), IsLevelCrossingTile(), MarkTileDirtyByTile(), ReverseDiagDir(), SetCrossingBarred(), Map::Size(), and TileOffsByDiagDir().
Referenced by CmdRemoveSingleRail(), and RemoveRoad().
Update road infrastructure counts for a company.
rt | Road type to update count of. |
o | Owner of road piece. |
count | Number of road pieces to adjust. |
Definition at line 190 of file road_cmd.cpp.
References DirtyCompanyInfrastructureWindows(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Company::infrastructure, INVALID_ROADTYPE, and CompanyInfrastructure::road.
Referenced by CmdBuildRoad(), CmdBuildRoadDepot(), CmdBuildRoadStop(), CmdBuildRoadWaypoint(), ConvertRoadTypeOwner(), DoClearBridge(), DoClearTunnel(), RemoveGenericRoadStop(), RemoveRoad(), RemoveRoadStop(), and RemoveRoadWaypointStop().
void UpdateLevelCrossing | ( | TileIndex | tile, |
bool | sound, | ||
bool | force_bar | ||
) |
Update a level crossing to barred or open (crossing may include multiple adjacent tiles).
tile | Tile which causes the update. |
sound | Should we play sound? |
force_bar | Should we force the crossing to be barred? |
Definition at line 1773 of file train_cmd.cpp.
References AxisToDiagDir(), CheckLevelCrossing(), GetCrossingRoadAxis(), IsLevelCrossingTile(), ReverseDiagDir(), Map::Size(), TileAddByDiagDir(), and UpdateLevelCrossingTile().
Referenced by AfterLoadGame(), ChangeOwnershipOfCompanyItems(), CmdBuildRoad(), CmdBuildSingleRail(), Train::Crash(), DeleteLastWagon(), MaybeBarCrossingWithSound(), ReverseTrainDirection(), TrainController(), TryReserveRailTrack(), and UnreserveRailTrack().
bool ValParamRoadType | ( | RoadType | roadtype | ) |
Validate functions for rail building.
roadtype | road type to check. |
Definition at line 153 of file road.cpp.
References _current_company, HasRoadTypeAvail(), and ROADTYPE_END.
Referenced by CmdBuildBridge(), CmdBuildLongRoad(), CmdBuildRoad(), CmdBuildRoadDepot(), CmdBuildRoadStop(), CmdBuildTunnel(), CmdConvertRoad(), CmdRemoveLongRoad(), BuildRoadToolbarWindow::OnInvalidateData(), and ShowBuildRoadToolbar().