OpenTTD Source: src/road.cpp File Reference

OpenTTD Source 15.0-beta1

Functions
road.cpp File Reference

Generic road related functions. More...

`#include "stdafx.h"`
`#include "rail_map.h"`
`#include "road_map.h"`
`#include "water_map.h"`
`#include "genworld.h"`
`#include "company_func.h"`
`#include "company_base.h"`
`#include "engine_base.h"`
`#include "timer/timer_game_calendar.h"`
`#include "landscape.h"`
`#include "road.h"`
`#include "road_func.h"`
`#include "roadveh.h"`
`#include "safeguards.h"`

Go to the source code of this file.

## Functions
static bool | IsPossibleCrossing (const TileIndex tile, Axis ax)
| Return if the tile is a valid tile for a crossing.
RoadBits | CleanUpRoadBits (const TileIndex tile, RoadBits org_rb)
| Clean up unnecessary RoadBits of a planned tile.
bool | HasRoadTypeAvail (const CompanyID company, RoadType roadtype)
| Finds out, whether given company has a given RoadType available for construction.
static RoadTypes | GetMaskForRoadTramType (RoadTramType rtt)
bool | HasAnyRoadTypesAvail (CompanyID company, RoadTramType rtt)
| Test if any buildable RoadType is available for a company.
bool | ValParamRoadType (RoadType roadtype)
| Validate functions for rail building.
RoadTypes | AddDateIntroducedRoadTypes (RoadTypes current, TimerGameCalendar::Date date)
| Add the road types that are to be introduced at the given date.
RoadTypes | GetCompanyRoadTypes (CompanyID company, bool introduces)
| Get the road types the given company can build.
RoadTypes | GetRoadTypes (bool introduces)
| Get list of road types, regardless of company availability.
RoadType | GetRoadTypeByLabel (RoadTypeLabel label, bool allow_alternate_labels)
| Get the road type for a given label.

## Detailed Description

Generic road related functions.

Definition in file road.cpp.

## Function Documentation

## ◆ AddDateIntroducedRoadTypes()

RoadTypes AddDateIntroducedRoadTypes | ( | RoadTypes | current,
|  | TimerGameCalendar::Date | date
| ) |  |

Add the road types that are to be introduced at the given date.

Parameters

  rt | Roadtype
  current | The currently available roadtypes.
  date | The date for the introduction comparisons.

Returns
  The road types that should be available when date introduced road types are taken into account as well.

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().

## ◆ CleanUpRoadBits()

RoadBits CleanUpRoadBits | ( | const TileIndex | tile,
|  | RoadBits | org_rb
| ) |  |

Clean up unnecessary RoadBits of a planned tile.

Parameters

  tile | current tile
  org_rb | planned RoadBits

Returns
  optimised RoadBits

Definition at line 47 of file road.cpp.

References DIAGDIR_BEGIN, DIAGDIR_END, DiagDirToAxis(), DiagDirToRoadBits(), GetAnyRoadBits(), GetTileType(), IsNormalRoadTile(), IsPossibleCrossing(), IsValidTile(), IsWater(), MirrorRoadBits(), MP_CLEAR, MP_RAILWAY, MP_ROAD, MP_STATION, MP_TREES, MP_TUNNELBRIDGE, MP_WATER, ROAD_NONE, and TileAddByDiagDir().

Referenced by GrowTownInTile().

## ◆ GetCompanyRoadTypes()

RoadTypes GetCompanyRoadTypes | ( | CompanyID | company,
|  | bool | introduces
| ) |  |

Get the road types the given company can build.

Parameters

  company | the company to get the road types for.
  introduces | If true, include road types introduced by other road types

Returns
  the 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().

## ◆ GetMaskForRoadTramType()

static RoadTypes GetMaskForRoadTramType | ( | RoadTramType | rtt | ) |
| static

Definition at line 133 of file road.cpp.

## ◆ GetRoadTypeByLabel()

RoadType GetRoadTypeByLabel | ( | RoadTypeLabel | label,
|  | bool | allow_alternate_labels
| ) |  |

Get the road type for a given label.

Parameters

  label | the roadtype label.
  allow_alternate_labels | Search 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().

## ◆ GetRoadTypes()

RoadTypes GetRoadTypes | ( | bool | introduces | ) |

Get list of road types, regardless of company availability.

Parameters

  introduces | If true, include road types introduced by other road types

Returns
  the 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().

## ◆ HasAnyRoadTypesAvail()

bool HasAnyRoadTypesAvail | ( | CompanyID | company,
|  | RoadTramType | rtt
| ) |  |

Test if any buildable RoadType is available for a company.

Parameters

  company | the 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().

## ◆ HasRoadTypeAvail()

bool HasRoadTypeAvail | ( | const CompanyID | company,
|  | RoadType | roadtype
| ) |  |

Finds out, whether given company has a given RoadType available for construction.

Parameters

  company | ID of company
  roadtypet | RoadType to test

Returns
  true if company has the requested RoadType available

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().

## ◆ IsPossibleCrossing()

static bool IsPossibleCrossing | ( | const TileIndex | tile,
|  | Axis | ax
| ) |  |
| static

Return if the tile is a valid tile for a crossing.

Parameters

  tile | the current tile
  ax | the axis of the road over the rail

Returns
  true if it is a valid tile

Definition at line 33 of file road.cpp.

References AXIS_X, GetFoundationSlope(), GetRailTileType(), GetTrackBits(), IsTileType(), MP_RAILWAY, RAIL_TILE_NORMAL, SLOPE_FLAT, TRACK_BIT_X, and TRACK_BIT_Y.

Referenced by CleanUpRoadBits().

## ◆ ValParamRoadType()

bool ValParamRoadType | ( | RoadType | roadtype | ) |

Validate functions for rail building.

Parameters

  roadtype | road type to check.

Returns
  true if the current company may build the road.

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().