OpenTTD Source 20241224-master-gf74b0cf984
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

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  RoadTypeFlag {
  ROTF_CATENARY = 0 , ROTF_NO_LEVEL_CROSSING , ROTF_NO_HOUSES , ROTF_HIDDEN ,
  ROTF_TOWN_BUILD
}
 Roadtype flag bit numbers. More...
 
enum  RoadTypeFlags : uint8_t {
  ROTFB_NONE = 0 , ROTFB_CATENARY = 1 << ROTF_CATENARY , ROTFB_NO_LEVEL_CROSSING = 1 << ROTF_NO_LEVEL_CROSSING , ROTFB_NO_HOUSES = 1 << ROTF_NO_HOUSES ,
  ROTFB_HIDDEN = 1 << ROTF_HIDDEN , ROTFB_TOWN_BUILD = 1 << ROTF_TOWN_BUILD
}
 Roadtype flags. More...
 
enum  RoadTypeSpriteGroup {
  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

◆ RoadTypeLabelList

typedef std::vector<RoadTypeLabel> RoadTypeLabelList

List of road type labels.

Definition at line 76 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

Roadtype flag bit numbers.

Starts with RO instead of R because R is used for rails

Enumerator
ROTF_CATENARY 

Bit number for adding catenary.

ROTF_NO_LEVEL_CROSSING 

Bit number for disabling level crossing.

ROTF_NO_HOUSES 

Bit number for setting this roadtype as not house friendly.

ROTF_HIDDEN 

Bit number for hidden from construction.

ROTF_TOWN_BUILD 

Bit number for allowing towns to build this roadtype.

Definition at line 37 of file road.h.

◆ RoadTypeFlags

enum RoadTypeFlags : uint8_t

Roadtype flags.

Starts with RO instead of R because R is used for rails

Enumerator
ROTFB_NONE 

All flags cleared.

ROTFB_CATENARY 

Value for drawing a catenary.

ROTFB_NO_LEVEL_CROSSING 

Value for disabling a level crossing.

ROTFB_NO_HOUSES 

Value for for setting this roadtype as not house friendly.

ROTFB_HIDDEN 

Value for hidden from construction.

ROTFB_TOWN_BUILD 

Value for allowing towns to build this roadtype.

Definition at line 46 of file road.h.

◆ RoadTypeSpriteGroup

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 59 of file road.h.

Function Documentation

◆ AllocateRoadType()

◆ GetRoadTramType()

RoadTramType GetRoadTramType ( RoadType  roadtype)
inline

Definition at line 212 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 227 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(), SetCurrentLabelLists(), 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 242 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(), ROADTYPE_BEGIN, ROADTYPE_END, ROTF_HIDDEN, and SetBit().

Referenced by AfterLoadGRFs().

◆ OtherRoadTramType()

RoadTramType OtherRoadTramType ( RoadTramType  rtt)
inline

Definition at line 217 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 252 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 263 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 281 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 295 of file road.h.

References GetRoadTypeInfo(), HasBit(), ROADTYPE_END, and ROTF_NO_LEVEL_CROSSING.

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

◆ RoadTypeIsRoad()

bool RoadTypeIsRoad ( RoadType  roadtype)
inline

Definition at line 202 of file road.h.

◆ RoadTypeIsTram()

bool RoadTypeIsTram ( RoadType  roadtype)
inline

Definition at line 207 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.