OpenTTD Source 20250205-master-gfd85ab1e2c
road.h File Reference

Road specific functions. More...

#include "road_type.h"
#include "gfx_type.h"
#include "core/bitmath_func.hpp"
#include "strings_type.h"
#include "timer/timer_game_calendar.h"
#include "core/enum_type.hpp"
#include "newgrf.h"
#include "economy_func.h"

Go to the source code of this file.

Data Structures

class  RoadTypeInfo
 

Typedefs

using RoadTypeFlags = EnumBitSet< RoadTypeFlag, uint8_t >
 
typedef std::vector< RoadTypeLabel > RoadTypeLabelList
 List of road type labels.
 

Enumerations

enum  RoadTramType : bool { RTT_ROAD , RTT_TRAM }
 
enum  RoadTramTypes : uint8_t { RTTB_ROAD = 1 << RTT_ROAD , RTTB_TRAM = 1 << RTT_TRAM }
 
enum class  RoadTypeFlag : uint8_t {
  Catenary = 0 , NoLevelCrossing = 1 , NoHouses = 2 , Hidden = 3 ,
  TownBuild = 4
}
 Roadtype flag bit numbers. More...
 
enum  RoadTypeSpriteGroup : uint8_t {
  ROTSG_CURSORS , ROTSG_OVERLAY , ROTSG_GROUND , ROTSG_TUNNEL ,
  ROTSG_CATENARY_FRONT , ROTSG_CATENARY_BACK , ROTSG_BRIDGE , ROTSG_reserved2 ,
  ROTSG_DEPOT , ROTSG_reserved3 , ROTSG_ROADSTOP , ROTSG_ONEWAY ,
  ROTSG_END
}
 Sprite groups for a roadtype. More...
 

Functions

bool RoadTypeIsRoad (RoadType roadtype)
 
bool RoadTypeIsTram (RoadType roadtype)
 
RoadTramType GetRoadTramType (RoadType roadtype)
 
RoadTramType OtherRoadTramType (RoadTramType rtt)
 
const RoadTypeInfoGetRoadTypeInfo (RoadType roadtype)
 Returns a pointer to the Roadtype information for a given roadtype.
 
bool HasPowerOnRoad (RoadType enginetype, RoadType tiletype)
 Checks if an engine of the given RoadType got power on a tile with a given RoadType.
 
Money RoadBuildCost (RoadType roadtype)
 Returns the cost of building the specified roadtype.
 
Money RoadClearCost (RoadType roadtype)
 Returns the cost of clearing the specified roadtype.
 
Money RoadConvertCost (RoadType from, RoadType to)
 Calculates the cost of road conversion.
 
bool RoadNoLevelCrossing (RoadType roadtype)
 Test if road disallows level crossings.
 
RoadType GetRoadTypeByLabel (RoadTypeLabel label, bool allow_alternate_labels=true)
 Get the road type for a given label.
 
void ResetRoadTypes ()
 Reset all road type information to its default values.
 
void InitRoadTypes ()
 Resolve sprites of custom road types.
 
RoadType AllocateRoadType (RoadTypeLabel label, RoadTramType rtt)
 Allocate a new road type label.
 
bool HasAnyRoadTypesAvail (CompanyID company, RoadTramType rtt)
 Test if any buildable RoadType is available for a company.
 

Variables

static const RoadTramType _roadtramtypes [] = { RTT_ROAD, RTT_TRAM }
 
RoadTypes _roadtypes_type
 Bitmap of road/tram types.
 
std::vector< RoadType_sorted_roadtypes
 
RoadTypes _roadtypes_hidden_mask
 

Detailed Description

Road specific functions.

Definition in file road.h.

Typedef Documentation

◆ RoadTypeFlags

Definition at line 44 of file road.h.

◆ RoadTypeLabelList

typedef std::vector<RoadTypeLabel> RoadTypeLabelList

List of road type labels.

Definition at line 66 of file road.h.

Enumeration Type Documentation

◆ RoadTramType

enum RoadTramType : bool

Definition at line 23 of file road.h.

◆ RoadTramTypes

enum RoadTramTypes : uint8_t

Definition at line 28 of file road.h.

◆ RoadTypeFlag

enum class RoadTypeFlag : uint8_t
strong

Roadtype flag bit numbers.

Enumerator
Catenary 

Bit number for adding catenary.

NoLevelCrossing 

Bit number for disabling level crossing.

NoHouses 

Bit number for setting this roadtype as not house friendly.

Hidden 

Bit number for hidden from construction.

TownBuild 

Bit number for allowing towns to build this roadtype.

Definition at line 37 of file road.h.

◆ RoadTypeSpriteGroup

enum RoadTypeSpriteGroup : uint8_t

Sprite groups for a roadtype.

Enumerator
ROTSG_CURSORS 

Optional: Cursor and toolbar icon images.

ROTSG_OVERLAY 

Optional: Images for overlaying track.

ROTSG_GROUND 

Required: Main group of ground images.

ROTSG_TUNNEL 

Optional: Ground images for tunnels.

ROTSG_CATENARY_FRONT 

Optional: Catenary front.

ROTSG_CATENARY_BACK 

Optional: Catenary back.

ROTSG_BRIDGE 

Required: Bridge surface images.

ROTSG_reserved2 

Placeholder, if we need specific level crossing sprites.

ROTSG_DEPOT 

Optional: Depot images.

ROTSG_reserved3 

Placeholder, if we add road fences (for highways).

ROTSG_ROADSTOP 

Required: Bay stop surface.

ROTSG_ONEWAY 

Optional: One-way indicator images.

Definition at line 49 of file road.h.

Function Documentation

◆ AllocateRoadType()

◆ GetRoadTramType()

RoadTramType GetRoadTramType ( RoadType  roadtype)
inline

Definition at line 202 of file road.h.

◆ GetRoadTypeByLabel()

RoadType GetRoadTypeByLabel ( RoadTypeLabel  label,
bool  allow_alternate_labels 
)

Get the road type for a given label.

Parameters
labelthe roadtype label.
allow_alternate_labelsSearch in the alternate label lists as well.
Returns
the roadtype.

Definition at line 254 of file road.cpp.

References RoadTypeInfo::alternate_labels, GetRoadTypeInfo(), INVALID_ROADTYPE, RoadTypeInfo::label, ROADTYPE_BEGIN, and ROADTYPE_END.

Referenced by AfterLoadGRFs(), ConvertRoadTypes(), RoadTypeResolverObject::GetFeature(), GetRoadTypeTranslation(), and RoadTypeChangeInfo().

◆ GetRoadTypeInfo()

const RoadTypeInfo * GetRoadTypeInfo ( RoadType  roadtype)
inline

Returns a pointer to the Roadtype information for a given roadtype.

Parameters
roadtypethe road type which the information is requested for
Returns
The pointer to the RoadTypeInfo

Definition at line 217 of file road.h.

References ROADTYPE_END.

Referenced by AddDateIntroducedRoadTypes(), AfterLoadVehiclesPhase2(), CheckAutoreplaceValidity(), CmdBuildRoadVehicle(), CompareRoadTypes(), DrawBridgeRoadBits(), DrawRoadBits(), DrawRoadDepotSprite(), DrawRoadStopTile(), DrawRoadTypeCatenary(), DrawTile_Road(), DrawTile_TunnelBridge(), CompanyInfrastructureWindow::DrawWidget(), GetCompanyRoadTypes(), GetEngineCategoryName(), RoadVehicle::GetMaxTrackSpeed(), GetReverseRoadTypeTranslation(), GetRoadTypeByLabel(), GetRoadTypes(), GetSmallMapRoutesPixels(), CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::GetSpeedLimit(), GetTownRoadType(), GetTownRoadTypeFirstIntroductionDate(), HasPowerOnRoad(), HasRoadCatenary(), HasRoadTypeAvail(), IsEngineBuildable(), NewVehicleAvailable(), BuildRoadToolbarWindow::OnClick(), BuildRoadToolbarWindow::OnInit(), BuildRoadToolbarWindow::OnPlaceMouseUp(), BuildRoadToolbarWindow::OnPlaceObject(), RoadBuildCost(), RoadMaintenanceCost(), RoadNoLevelCrossing(), RoadTypesAllowHouseHere(), ROTTChunkHandler::Save(), SetCurrentRoadTypeLabelList(), ReplaceVehicleWindow::SetStringParameters(), BuildVehicleWindow::SetStringParameters(), BuildRoadToolbarWindow::SetStringParameters(), TownCanGrowRoad(), ReplaceVehicleWindow::UpdateWidgetSize(), and CompanyInfrastructureWindow::UpdateWidgetSize().

◆ HasAnyRoadTypesAvail()

bool HasAnyRoadTypesAvail ( CompanyID  company,
RoadTramType  rtt 
)

Test if any buildable RoadType is available for a company.

Parameters
companythe company in question
Returns
true if company has any RoadTypes available

Definition at line 143 of file road.cpp.

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

Referenced by CanBuildVehicleInfrastructure().

◆ HasPowerOnRoad()

bool HasPowerOnRoad ( RoadType  enginetype,
RoadType  tiletype 
)
inline

Checks if an engine of the given RoadType got power on a tile with a given RoadType.

This would normally just be an equality check, but for electrified roads (which also support non-electric vehicles).

Parameters
enginetypeThe RoadType of the engine we are considering.
tiletypeThe RoadType of the tile we are considering.
Returns
Whether the engine got power on this tile.

Definition at line 232 of file road.h.

References GetRoadTypeInfo(), and HasBit().

Referenced by CanConnectToRoad(), CheckFlatLandRoadStop(), CmdBuildRoad(), and CmdConvertRoad().

◆ InitRoadTypes()

void InitRoadTypes ( )

Resolve sprites of custom road types.

Definition at line 114 of file road_cmd.cpp.

References CompareRoadTypes(), RoadTypeInfo::flags, HasBit(), Hidden, ROADTYPE_BEGIN, ROADTYPE_END, SetBit(), and EnumBitSet< Tenum, Tstorage >::Test().

Referenced by AfterLoadGRFs().

◆ OtherRoadTramType()

RoadTramType OtherRoadTramType ( RoadTramType  rtt)
inline

Definition at line 207 of file road.h.

◆ ResetRoadTypes()

void ResetRoadTypes ( )

Reset all road type information to its default values.

Definition at line 67 of file road_cmd.cpp.

References _original_roadtypes, _roadtypes_type, lengthof, ROADTYPES_NONE, and ROADTYPES_TRAM.

Referenced by ResetNewGRFData().

◆ RoadBuildCost()

Money RoadBuildCost ( RoadType  roadtype)
inline

Returns the cost of building the specified roadtype.

Parameters
roadtypeThe roadtype being built.
Returns
The cost multiplier.

Definition at line 242 of file road.h.

References GetRoadTypeInfo(), and ROADTYPE_END.

Referenced by CheckFlatLandRoadStop(), CmdBuildBridge(), CmdBuildRoad(), CmdBuildSingleRail(), CmdBuildTunnel(), RoadClearCost(), RoadConvertCost(), and ShowBuildBridgeWindow().

◆ RoadClearCost()

Money RoadClearCost ( RoadType  roadtype)
inline

Returns the cost of clearing the specified roadtype.

Parameters
roadtypeThe roadtype being removed.
Returns
The cost.

Definition at line 253 of file road.h.

References RoadBuildCost(), and ROADTYPE_END.

Referenced by RemoveRoad(), RoadConvertCost(), and TunnelBridgeClearCost().

◆ RoadConvertCost()

Money RoadConvertCost ( RoadType  from,
RoadType  to 
)
inline

Calculates the cost of road conversion.

Parameters
fromThe roadtype we are converting from
toThe roadtype we are converting to
Returns
Cost per RoadBit

Definition at line 271 of file road.h.

References RoadBuildCost(), and RoadClearCost().

Referenced by CmdConvertRoad().

◆ RoadNoLevelCrossing()

bool RoadNoLevelCrossing ( RoadType  roadtype)
inline

Test if road disallows level crossings.

Parameters
roadtypeThe roadtype we are testing
Returns
True iff the roadtype disallows level crossings

Definition at line 285 of file road.h.

References RoadTypeInfo::flags, GetRoadTypeInfo(), NoLevelCrossing, ROADTYPE_END, and EnumBitSet< Tenum, Tstorage >::Test().

Referenced by CmdBuildRoad(), CmdBuildSingleRail(), and CmdConvertRoad().

◆ RoadTypeIsRoad()

bool RoadTypeIsRoad ( RoadType  roadtype)
inline

Definition at line 192 of file road.h.

◆ RoadTypeIsTram()

bool RoadTypeIsTram ( RoadType  roadtype)
inline

Definition at line 197 of file road.h.

Variable Documentation

◆ _roadtramtypes

const RoadTramType _roadtramtypes[] = { RTT_ROAD, RTT_TRAM }
static

Definition at line 34 of file road.h.

◆ _roadtypes_hidden_mask

RoadTypes _roadtypes_hidden_mask
extern

Definition at line 56 of file road_cmd.cpp.

◆ _roadtypes_type

RoadTypes _roadtypes_type
extern

Bitmap of road/tram types.

Bit if set if a roadtype is tram.

Definition at line 62 of file road_cmd.cpp.

Referenced by AllocateRoadType(), ScenarioEditorToolbarWindow::OnPaint(), ResetRoadTypes(), and BuildRoadToolbarWindow::RoadTramToolbarGlobalHotkeys().

◆ _sorted_roadtypes

std::vector<RoadType> _sorted_roadtypes
extern

Definition at line 55 of file road_cmd.cpp.