OpenTTD Source 20241224-master-gf74b0cf984
road_cmd.h File Reference

Road related functions. More...

#include "direction_type.h"
#include "road_type.h"
#include "command_type.h"

Go to the source code of this file.

Functions

void DrawRoadDepotSprite (int x, int y, DiagDirection dir, RoadType rt)
 Draw the road depot sprite.
 
void UpdateNearestTownForRoadTiles (bool invalidate)
 Updates cached nearest town for all road tiles.
 
CommandCost CmdBuildLongRoad (DoCommandFlag flags, TileIndex end_tile, TileIndex start_tile, RoadType rt, Axis axis, DisallowedRoadDirections drd, bool start_half, bool end_half, bool is_ai)
 Build a long piece of road.
 
std::tuple< CommandCost, MoneyCmdRemoveLongRoad (DoCommandFlag flags, TileIndex end_tile, TileIndex start_tile, RoadType rt, Axis axis, bool start_half, bool end_half)
 Remove a long piece of road.
 
CommandCost CmdBuildRoad (DoCommandFlag flags, TileIndex tile, RoadBits pieces, RoadType rt, DisallowedRoadDirections toggle_drd, TownID town_id)
 Build a piece of road.
 
CommandCost CmdBuildRoadDepot (DoCommandFlag flags, TileIndex tile, RoadType rt, DiagDirection dir)
 Build a road depot.
 
CommandCost CmdConvertRoad (DoCommandFlag flags, TileIndex tile, TileIndex area_start, RoadType to_type)
 Convert one road subtype to another.
 
void CcRoadDepot (Commands cmd, const CommandCost &result, TileIndex tile, RoadType rt, DiagDirection dir)
 
void CcRoadStop (Commands cmd, const CommandCost &result, TileIndex tile, uint8_t width, uint8_t length, RoadStopType, bool is_drive_through, DiagDirection dir, RoadType, RoadStopClassID spec_class, uint16_t spec_index, StationID, bool)
 Command callback for building road stops.
 

Variables

CommandCallback CcPlaySound_CONSTRUCTION_OTHER
 
CommandCallback CcBuildRoadTunnel
 

Detailed Description

Road related functions.

Definition in file road_cmd.h.

Function Documentation

◆ CcRoadDepot()

void CcRoadDepot ( Commands  cmd,
const CommandCost result,
TileIndex  tile,
RoadType  rt,
DiagDirection  dir 
)

Definition at line 173 of file road_gui.cpp.

◆ CcRoadStop()

void CcRoadStop ( Commands  cmd,
const CommandCost result,
TileIndex  tile,
uint8_t  width,
uint8_t  length,
RoadStopType  ,
bool  is_drive_through,
DiagDirection  dir,
RoadType  ,
RoadStopClassID  spec_class,
uint16_t  spec_index,
StationID  ,
bool   
)

Command callback for building road stops.

Parameters
resultResult of the build road stop command.
tileStart tile.
widthWidth of the road stop.
lengthLength of the road stop.
is_drive_throughFalse for normal stops, true for drive-through.
dirEntrance direction (DiagDirection) for normal stops. Converted to the axis for drive-through stops.
spec_classRoad stop spec class.
spec_indexRoad stop spec index.
See also
CmdBuildRoadStop

Definition at line 194 of file road_gui.cpp.

References _settings_client, SoundSettings::confirm, ConnectRoadToStructure(), CommandCost::Failed(), NewGRFClass< Tspec, Tindex, Tmax >::Get(), NewGRFClass< Tspec, Tindex, Tmax >::GetClassCount(), NewGRFClass< Tspec, Tindex, Tmax >::GetSpec(), ClientSettings::gui, HasBit(), GUISettings::persistent_buildingtools, ResetObjectToPlace(), ReverseDiagDir(), RSF_NO_AUTO_ROAD_CONNECTION, SND_1F_CONSTRUCTION_OTHER, and ClientSettings::sound.

Referenced by PlaceRoadStop().

◆ CmdBuildLongRoad()

CommandCost CmdBuildLongRoad ( DoCommandFlag  flags,
TileIndex  end_tile,
TileIndex  start_tile,
RoadType  rt,
Axis  axis,
DisallowedRoadDirections  drd,
bool  start_half,
bool  end_half,
bool  is_ai 
)

Build a long piece of road.

Parameters
flagsoperation to perform
end_tileend tile of drag
start_tilestart tile of drag
rtroad type
axisdirection
drdset road direction
start_halfstart tile starts in the 2nd half of tile (p2 & 1). Only used if is_ai is set or if we are building a single tile
end_halfend tile starts in the 2nd half of tile (p2 & 2). Only used if is_ai is set or if we are building a single tile
is_aidefines two different behaviors for this command:
  • false = Build up to an obstacle. Do not build the first and last roadbits unless they can be connected to something, or if we are building a single tile
  • true = Fail if an obstacle is found. Always take into account start_half and end_half. This behavior is used for scripts
Returns
the cost of this operation or an error

Definition at line 979 of file road_cmd.cpp.

References CommandCost::AddCost(), AXIS_X, AXIS_Y, AxisToDiagDir(), AxisToRoadBits(), CanConnectToRoad(), CMD_ERROR, DiagDirToRoadBits(), DRD_BOTH, DRD_NORTHBOUND, DRD_SOUTHBOUND, EXPENSES_CONSTRUCTION, CommandCost::Failed(), CommandCost::GetErrorMessage(), GetTunnelBridgeDirection(), IsBridge(), IsTileType(), IsValidAxis(), IsValidDisallowedRoadDirections(), MP_TUNNELBRIDGE, ReverseDiagDir(), Map::Size(), TileOffsByDiagDir(), TileX(), TileY(), and ValParamRoadType().

◆ CmdBuildRoad()

CommandCost CmdBuildRoad ( DoCommandFlag  flags,
TileIndex  tile,
RoadBits  pieces,
RoadType  rt,
DisallowedRoadDirections  toggle_drd,
TownID  town_id 
)

Build a piece of road.

Parameters
flagsoperation to perform
tiletile where to build road
piecesroad pieces to build (RoadBits)
rtroad type
toggle_drddisallowed directions to toggle
town_idthe town that is building the road (0 if not applicable)
Returns
the cost of this operation or an error

Definition at line 610 of file road_cmd.cpp.

References _current_company, _settings_game, CommandCost::AddCost(), AXIS_X, AXIS_Y, AxisToRoadBits(), AxisToTrack(), ConstructionSettings::build_on_slopes, Town::cache, CalcClosestTownFromTile(), CheckOwnership(), CheckRoadSlope(), CheckTileOwnership(), CMD_ERROR, ComplementRoadBits(), GameSettings::construction, CountBits(), ConstructionSettings::crossing_with_competitor, DC_EXEC, DiagDirToRoadBits(), DirtyCompanyInfrastructureWindows(), DistanceSquare(), DRD_NONE, EnsureNoVehicleOnGround(), EXPENSES_CONSTRUCTION, CommandCost::Failed(), GetAnyRoadBits(), CommandCost::GetCost(), GetCrossingRoadAxis(), GetCrossingRoadBits(), GetDisallowedRoadDirections(), GetDriveThroughStopAxis(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), GetOtherTunnelBridgeEnd(), GetRailReservationTrackBits(), GetRailTileType(), GetRailType(), GetRoadBits(), GetRoadFoundation(), GetRoadOwner(), GetRoadTileType(), GetTileOwner(), GetTileSlope(), GetTileType(), GetTrackBits(), GetTunnelBridgeDirection(), GetTunnelBridgeLength(), GetTunnelBridgeTransportType(), HasBit(), HasExactlyOneBit(), HasPowerOnRoad(), HasRoadWorks(), HasTileRoadType(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Company::infrastructure, INVALID_ROADTYPE, IsBridge(), IsDriveThroughStopTile(), IsNormalRoad(), IsNormalRoadTile(), IsSteepSlope(), IsStraightRoad(), IsTileType(), IsValidDisallowedRoadDirections(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::IsValidID(), IsValidRoadBits(), LEVELCROSSING_TRACKBIT_FACTOR, MakeRoadCrossing(), MakeRoadNormal(), MarkBridgeDirty(), MarkDirtyAdjacentLevelCrossingTiles(), MarkTileDirtyByTile(), MirrorRoadBits(), MP_RAILWAY, MP_ROAD, MP_STATION, MP_TUNNELBRIDGE, OtherAxis(), OWNER_DEITY, OWNER_NONE, OWNER_TOWN, CompanyInfrastructure::rail, RAIL_TILE_NORMAL, RailNoLevelCrossings(), ROAD_NONE, ROAD_TILE_CROSSING, ROAD_TILE_DEPOT, ROAD_TILE_NORMAL, ROAD_X, ROAD_Y, RoadBuildCost(), RoadNoLevelCrossing(), SetCrossingReservation(), SetDisallowedRoadDirections(), SetRoadBits(), SetRoadOwner(), SetRoadType(), SetTownIndex(), TownCache::squared_town_zone_radius, TRACK_BIT_X, TRACK_BIT_Y, TRANSPORT_ROAD, TUNNELBRIDGE_TRACKBIT_FACTOR, TunnelBridgeIsFree(), UpdateCompanyRoadInfrastructure(), UpdateLevelCrossing(), VALID_LEVEL_CROSSING_SLOPES, ValParamRoadType(), Town::xy, and YapfNotifyTrackLayoutChange().

◆ CmdBuildRoadDepot()

◆ CmdConvertRoad()

CommandCost CmdConvertRoad ( DoCommandFlag  flags,
TileIndex  tile,
TileIndex  area_start,
RoadType  to_type 
)

◆ CmdRemoveLongRoad()

std::tuple< CommandCost, Money > CmdRemoveLongRoad ( DoCommandFlag  flags,
TileIndex  end_tile,
TileIndex  start_tile,
RoadType  rt,
Axis  axis,
bool  start_half,
bool  end_half 
)

Remove a long piece of road.

Parameters
flagsoperation to perform
end_tileend tile of drag
start_tilestart tile of drag
rtroad type
axisdirection
start_halfstart tile starts in the 2nd half of tile
end_halfend tile starts in the 2nd half of tile (p2 & 2)
Returns
the cost of this operation or an error

Definition at line 1075 of file road_cmd.cpp.

References CommandCost::AddCost(), AXIS_X, AXIS_Y, AxisToRoadBits(), CMD_ERROR, DC_EXEC, EXPENSES_CONSTRUCTION, GetAvailableMoneyForCommand(), CommandCost::GetCost(), CommandCost::GetErrorMessage(), IsValidAxis(), RemoveRoad(), ROAD_NE, ROAD_NW, ROAD_SE, ROAD_SW, Map::Size(), CommandCost::Succeeded(), TileOffsByAxis(), TileX(), TileY(), and ValParamRoadType().

◆ DrawRoadDepotSprite()

void DrawRoadDepotSprite ( int  x,
int  y,
DiagDirection  dir,
RoadType  rt 
)

Draw the road depot sprite.

Parameters
xThe x offset to draw at.
yThe y offset to draw at.
dirThe direction the depot must be facing.
rtThe road type of the depot to draw.

Definition at line 1875 of file road_cmd.cpp.

References _loaded_newgrf_features, _local_company, DiagDirToRoadBits(), DrawRailTileSeqInGUI(), DrawSprite(), RoadTypeInfo::flags, GetCustomRoadSprite(), GetRoadSpriteOffset(), GetRoadTypeInfo(), DrawTileSprites::ground, HasBit(), INVALID_TILE, ROTF_CATENARY, ROTSG_DEPOT, ROTSG_OVERLAY, SLOPE_FLAT, PalSpriteID::sprite, GRFLoadedFeatures::tram, and TRAMWAY_REPLACE_DEPOT_WITH_TRACK.

Referenced by BuildRoadDepotWindow::DrawWidget().

◆ UpdateNearestTownForRoadTiles()

void UpdateNearestTownForRoadTiles ( bool  invalidate)

Updates cached nearest town for all road tiles.

Parameters
invalidateare we just invalidating cached data?
Precondition
invalidate == true implies _generating_world == true

Definition at line 1918 of file road_cmd.cpp.

References _generating_world, CalcClosestTownFromTile(), HasTownOwnedRoad(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, IsRoadDepot(), IsTileType(), Map::Iterate(), MP_ROAD, and SetTownIndex().

Referenced by AfterLoadGame(), CmdFoundTown(), FoundTownWindow::OnClick(), and Town::PostDestructor().

Variable Documentation

◆ CcBuildRoadTunnel

CommandCallback CcBuildRoadTunnel

Definition at line 35 of file road_cmd.h.

◆ CcPlaySound_CONSTRUCTION_OTHER

CommandCallback CcPlaySound_CONSTRUCTION_OTHER

Definition at line 34 of file road_cmd.h.