|
OpenTTD Source 20251117-master-g7398d2e290
|
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.
| RoadTypes AddDateIntroducedRoadTypes | ( | RoadTypes | current, |
| TimerGameCalendar::Date | date | ||
| ) |
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 177 of file road.cpp.
References AddDateIntroducedRoadTypes(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::All(), GetRoadTypeInfo(), RoadTypeInfo::introduces_roadtypes, RoadTypeInfo::introduction_date, RoadTypeInfo::introduction_required_roadtypes, IsInsideMM(), RoadTypeInfo::label, TimerGameConst< struct Calendar >::MAX_DATE, ROADTYPE_BEGIN, ROADTYPE_END, and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Set().
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(), IsNeighbourRoadTile(), 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 1595 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 1505 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 210 of file road.cpp.
References _settings_game, AddDateIntroducedRoadTypes(), EngineInfo::climates, TimerGameCalendar::date, TimerGameConst< struct Calendar >::DAYS_IN_YEAR, GameSettings::game_creation, GetRoadTypeInfo(), RoadTypeInfo::introduces_roadtypes, Engine::IterateType(), GameCreationSettings::landscape, RoadVehicleInfo::roadtype, ROADTYPE_END, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), 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 238 of file road.cpp.
References _settings_game, AddDateIntroducedRoadTypes(), EngineInfo::climates, GameSettings::game_creation, GetRoadTypeInfo(), RoadTypeInfo::introduces_roadtypes, Engine::IterateType(), GameCreationSettings::landscape, TimerGameConst< struct Calendar >::MAX_DATE, RoadVehicleInfo::roadtype, ROADTYPE_END, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), 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 Catenary, RoadTypeInfo::flags, GetRoadTypeInfo(), ROADTYPE_END, and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test().
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 123 of file road.cpp.
References _generating_world, _roadtypes_hidden_mask, Company::avail_roadtypes, TimerGameCalendar::date, RoadTypeInfo::flags, Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_company_pool >::GetIfValid(), GetRoadTypeInfo(), Hidden, RoadTypeInfo::introduction_date, IsInsideMM(), RoadTypeInfo::label, TimerGameConst< struct Calendar >::MAX_DATE, OWNER_DEITY, OWNER_TOWN, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Reset(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), and TownBuild.
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 1820 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().
|
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 1837 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 180 of file road_cmd.cpp.
References DirtyCompanyInfrastructureWindows(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_company_pool >::GetIfValid(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::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 1788 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 164 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().