OpenTTD Source  20241108-master-g80f628063a
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

enum RoadStopClassID uint16_t void DrawRoadDepotSprite (int x, int y, DiagDirection dir, RoadType rt)
 Draw the road depot sprite. More...
 
void UpdateNearestTownForRoadTiles (bool invalidate)
 Updates cached nearest town for all road tiles. More...
 
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. More...
 
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. More...
 
CommandCost CmdBuildRoad (DoCommandFlag flags, TileIndex tile, RoadBits pieces, RoadType rt, DisallowedRoadDirections toggle_drd, TownID town_id)
 Build a piece of road. More...
 
CommandCost CmdBuildRoadDepot (DoCommandFlag flags, TileIndex tile, RoadType rt, DiagDirection dir)
 Build a road depot. More...
 
CommandCost CmdConvertRoad (DoCommandFlag flags, TileIndex tile, TileIndex area_start, RoadType to_type)
 Convert one road subtype to another. More...
 
 DEF_CMD_TRAIT (CMD_REMOVE_LONG_ROAD, CmdRemoveLongRoad, CMD_AUTO|CMD_NO_TEST, CMDT_LANDSCAPE_CONSTRUCTION) CommandCallback CcPlaySound_CONSTRUCTION_OTHER
 
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. More...
 

Variables

CommandCallback CcBuildRoadTunnel
 

Detailed Description

Road related functions.

Definition in file road_cmd.h.

Function Documentation

◆ 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.

◆ 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, CalcClosestTownFromTile(), CMD_ERROR, EXPENSES_CONSTRUCTION, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::IsValidID(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), OWNER_DEITY, OWNER_TOWN, and ROAD_NONE.

◆ CmdBuildRoadDepot()

CommandCost CmdBuildRoadDepot ( DoCommandFlag  flags,
TileIndex  tile,
RoadType  rt,
DiagDirection  dir 
)

Build a road depot.

Parameters
tiletile where to build the depot
flagsoperation to perform
rtroad type
direntrance direction
Returns
the cost of this operation or an error
Todo:
When checking for the tile slope, distinguish between "Flat land required" and "land sloped in wrong direction"

Definition at line 1149 of file road_cmd.cpp.

References _settings_game, CommandCost::AddCost(), ConstructionSettings::build_on_slopes, CanBuildDepotByTileh(), CMD_ERROR, GameSettings::construction, EXPENSES_CONSTRUCTION, GetTileSlope(), IsValidDiagDirection(), return_cmd_error, SLOPE_FLAT, and ValParamRoadType().

◆ CmdConvertRoad()

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

Convert one road subtype to another.

Not meant to convert from road to tram.

Parameters
flagsoperation to perform
tileend tile of road conversion drag
area_startstart tile of drag
to_typenew roadtype to convert to.
Returns
the cost of this operation or an error

Definition at line 2442 of file road_cmd.cpp.

References CMD_ERROR, Map::Size(), and ValParamRoadType().

◆ 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 AXIS_X, AXIS_Y, AxisToRoadBits(), CMD_ERROR, EXPENSES_CONSTRUCTION, GetAvailableMoneyForCommand(), IsValidAxis(), ROAD_NE, ROAD_NW, ROAD_SE, ROAD_SW, Map::Size(), TileX(), TileY(), and ValParamRoadType().

◆ DrawRoadDepotSprite()

enum RoadStopClassID uint16_t 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.

◆ 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, HasTownOwnedRoad(), IsRoadDepot(), IsTileType(), MP_ROAD, and Map::Size().